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

时间:2014-01-06 13:32:27

标签: c# serial-port arduino

我正在构建一个需要读取从arduino接收的一些串行数据的c#应用程序。 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(); 现在唯一的问题是我没有收到字符串,而是一个看起来像字节的整数。这是我感到困惑的部分,因为如何从一个看起来像字节的东西中读出一个整数。

1 个答案:

答案 0 :(得分:1)

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

如果要读取字节(而不是字符串),可以使用serialPort.BytesToRead属性来了解可读取的字节数。然后,您可以使用serialPort.Read(byte[], int, int)方法一次读取所有字节,或者serialPort.ReadByte()方法一次读取一个字节。

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