【发布时间】:2012-12-06 23:45:44
【问题描述】:
我在这里阅读了很多关于如何使用 .NET SerialPort 类从串行端口读取数据的问题,但没有一种推荐的方法对我来说完全有效。
这是我现在使用的代码:
SerialPort port = new SerialPort("COM1");
port.DataReceived += new SerialDataReceivedEventHandler(MyDataReceivedHandler);
以及事件处理程序:
void MyDataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
int count = port.BytesToRead;
byte[] ByteArray = new byte[count];
port.Read(ByteArray, 0, count);
}
但有时我仍然会丢失一些数据。我尝试了不同的方式来读取事件处理程序中的数据,但没有成功。
由于 .NET 4.5 为执行一些异步任务带来了新的可能性,例如似乎可以在 SerialPort 流上使用的 ReadAsync 方法,我很想知道处理这些情况的推荐方法是什么.
【问题讨论】:
-
你的问题真的很模糊。 “我有时仍然丢失一些数据”就像告诉你的机械师“我的车有时会发出有趣的声音”并询问修理需要多少钱。也许this answer 对相关问题可能会有所帮助。但是,如果您需要帮助,我认为您需要更加具体;事实上,通过查看有关该主题的其他问题,没有什么是无法回答的。
-
你说得对,我将一个真实的例子放在一起,以更好地说明正在发生的事情......
-
通过 RS232 或 485 实现串行通信协议是一项非常非常艰巨的任务。这需要很多经验。自从良好的旧 DOS 时代以来,我一直在实施这一点,但仍然陷入一些常见的陷阱。您为什么不尝试寻找可靠的第三方产品来处理串行通信?他们可能已经解决了你自己会遇到的所有许多、许多、许多错误:-) 如果这是一个练习,那就继续吧,最终掌握串行通信会让你非常满意! :-)
标签: c# serial-port .net-4.5