从我使用的串口读取时 serialport.read(XYZ,0,4) 其中xyz是一个字节数组。
问题1:这样做的时候,我读过的数据是否会从串口缓冲区中删除?或者是否有一个递增的指针?
问题2:
private void moduleSerialPort_DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)
{
.
.
.
}
如果在执行先前数据的代码时收到新数据,是否会触发收到的数据事件?
我发现当我的系统运行几个小时后,事情发生了: 当传输新数据时,它是在串行端口上接收的,但计算机先前已经处理过数据。所以我怀疑数据是否保留在缓冲区中并在下一个datareceived事件中执行。
有人可以帮帮我吗。 感谢您的帮助。 感谢
答案 0 :(得分:5)
数据保留在缓冲区中,直到您阅读它为止。简单地处理DataReceived
事件不会导致数据出列,您实际上必须阅读它。如果读取的内容少于整个缓冲区,则下次发生DataReceived
事件时,您将在新数据之前读取旧的剩余内容。
答案 1 :(得分:0)
答案 2 :(得分:0)