【发布时间】:2019-07-29 07:27:03
【问题描述】:
我正在开发一个从 Arduino 读取 RFID 标签的个人项目。 当我阅读第一个标签时;我收到总字节数并且信息被正确处理。 但是,在阅读以下时间时;似乎我的 PC 正在“看到”接收到的第一个字节(共 8 个)的接收事件;然后处理一次收到的数据; (当缓冲区中只有 6 个字节时)。 在发送这 6 个字节进行处理后,它注意到一个新的字节传入并处理它,以及后面的字节;产生两条 6 字节和 2 字节的消息。
结果示例:
第一次阅读:消息:06DB0934
第二次阅读:消息 1:06
第二次读取:消息 1:DB0934
下面是我谦虚的代码:
private void Port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (port.IsOpen)
{
byte[] data = new byte[1024];
int bytesRead = port.Read(data, 0, data.Length);
idTag = Encoding.ASCII.GetString(data, 0, bytesRead);
// Custom Event that will update Information on Main Form
OnTagReceived();
}
}
知道如何解决这个问题吗?
【问题讨论】:
-
看来您需要将 Read 放入一个排序循环中,以便您可以继续阅读,直到您收到所需的所有数据。
-
你好@NibblyPig:我试过使用StringBuilder并从Serial.Read中追加每个Char;在不同的尝试中:2个foreach循环;一个是从传入数据中获取字符,另一个是创建一个字符串。但没有成功。
标签: c# winforms arduino serial-port port