我有一个System.IO.Ports.SerialPort
用于串行端口通信的 .NET C# 类。它包括一个在循环中连续读取串行端口的线程。
我一直认为在正常程序流程中使用异常是不好的,但是在网上搜索我看到很多使用阻塞读取和TimeoutException
等待传入数据的示例,如下所示:
while (true)
{
try
{
serialPort.Read(buffer, offset, count);
/* Processing code here */
}
catch (TimeoutException)
{ }
}
SerialPort.BytesToRead()
在发出 之前检查不是更好吗Read
,就像在这个例子中一样:
while (true)
{
if (serialPort.BytesToRead() <= 0)
{
/* Wait for event signal or similar. */
}
serialPort.Read(buffer, offset, count);
ProcessData();
}