System.IO.Ports.SerialPort
シリアル ポート通信に使用する .NET C# クラスがあります。シリアルポートをループで連続して読み取るスレッドが含まれています。
TimeoutException
私は常に、通常のプログラム フローの一部として例外を使用するのは良くないと考えていましたが、Web を検索すると、次のように読み取りをブロックし、着信データを待機する例がたくさんあります。
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();
}