首页 文章

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

提问于
浏览
1

我正在构建一个需要读取从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 回答

  • 1

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

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

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

相关问题