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