通过C#进行串行通信

时间:2012-06-15 15:02:11

标签: c# serial-port buffer serial-communication

从我使用的串口读取时 serialport.read(XYZ,0,4) 其中xyz是一个字节数组。

问题1:这样做的时候,我读过的数据是否会从串口缓冲区中删除?或者是否有一个递增的指针?

问题2:

private void moduleSerialPort_DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)
{
.
.
.
}

如果在执行先前数据的代码时收到新数据,是否会触发收到的数据事件?

我发现当我的系统运行几个小时后,事情发生了: 当传输新数据时,它是在串行端口上接收的,但计算机先前已经处理过数据。所以我怀疑数据是否保留在缓冲区中并在下一个datareceived事件中执行。

有人可以帮帮我吗。 感谢您的帮助。 感谢

3 个答案:

答案 0 :(得分:5)

数据保留在缓冲区中,直到您阅读它为止。简单地处理DataReceived事件不会导致数据出列,您实际上必须阅读它。如果读取的内容少于整个缓冲区,则下次发生DataReceived事件时,您将在新数据之前读取旧的剩余内容。

答案 1 :(得分:0)

答案 2 :(得分:0)