我有一个使用C#的DataReceived事件处理程序从串口读取数据的类。当我接收到数据时,我知道头部将有5个字节,因此在获得至少这些字节之前,我不想对数据做任何操作。我的当前代码如下:
while (serialPort.BytesToRead<5)
{
//Do nothing while we have less bytes than the header size
}
//Once at least 5 bytes are received, process header
据我所了解,这段代码是阻塞的,并且需要改进。我正在寻求有关如何改进的建议。在DataReceived事件处理程序内添加另一个事件处理程序是否合适?
System.IO.Ports.SerialPort serialPort
而不是仅仅使用SerialPort serialPort
。不知道是否出了什么问题,但只有这种方式才能工作。是的,我已经using System.IO.Ports
。--- 但是,我仍然无法读取任何东西 :( - MagicLegendBaseStream
上的ReadTimeout
不起作用。 - Felix