通过C#进行串行通信

Aks*_*kre 3 c# buffer serial-port serial-communication

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

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

问题2:

private void moduleSerialPort_DataReceived(object sender,System.IO.Ports.SerialDataReceivedEventArgs e)
{
.
.
.
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ben*_*igt 5

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