我有这段代码:
private void SerialPortDataReceived(object sender, SerialDataReceivedEventArgs e)
{
while(_serialPort.BytesToRead > 0)
{
var count = _serialPort.BytesToRead;
var bytes = new byte[count];
_serialPort.Read(bytes, 0, count);
AddBytes(bytes);
}
}
代码取自Serial Port Polling and Data handling。
我的问题是关于While循环。 “_serialPort.BytesToRead”何时更新?意思是,如果上面的方法是一个事件驱动的方法,并且我使用“_serialPort.Read”,是不是它清除了所有的串口缓冲区?如果答案是否定的,这段代码可以创建一个无限循环,不是吗?