繁体   English   中英

使用C#应用程序从arduino读取串行数据

[英]Reading serial data from arduino with c# application

我正在构建需要读取从arduino接收到的一些串行数据的ac#应用程序。 arduino发送以下信息:

Serial.write(0x1);
Serial.write(0x106);
Serial.write(fake_channel.samples, SAMPLE_COUNT); //Sample array

样本数组只不过是一个用整数填充的数组。

用C#应用程序阅读此内容的最佳方法是什么? 我需要从串行数据中获取整数。 因此,当我得到0x1时,我想读取1。我可以使用以下方法读取数据:

private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
    //Code to read the serial data needed here

}

在我的一个较旧的应用程序中,我能够通过以下方式读取字符串格式的一些串行数据:serialPort.ReadExisting(); 现在唯一的问题是我没有收到字符串,而是一个看起来像字节的整数。 那是我感到困惑的部分,因为如何从看起来像字节的东西中读取整数。

DataReceived事件告诉您已接收到一些字节,您可以去读取它们。

如果要读取字节(不是字符串),则可以使用serialPort.BytesToRead属性来知道有多少字节可读取。 然后可以使用serialPort.Read(byte[], int, int)方法在一次读出所有的字节,或serialPort.ReadByte()方法来读取一次一个字节。

如果尝试读取更多可用字节,则该方法将阻塞,直到指定数量的字节可用为止。 为了防止这种情况,您可以使用serialPort.ReadTimeout设置读取超时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM