我正在构建一个需要读取从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 回答
DataReceived
事件告诉您已收到一些字节,您可以去阅读它们 .如果要读取字节(而不是字符串),可以使用
serialPort.BytesToRead
属性来了解可读取的字节数 . 然后,您可以使用serialPort.Read(byte[], int, int)
方法一次读取所有字节,或者serialPort.ReadByte()
方法一次读取一个字节 .如果您尝试读取可用的字节数,则该方法将阻塞,直到指定的字节数可用 . 为防止这种情况,您可以使用
serialPort.ReadTimeout
设置读取超时 .