シリアルポートを使用して組み込みデバイスと通信するC#アプリがあります。以下のループでは、メッセージ全体を読み取り、受信時に基本的にメッセージを解析します。これは私のコードではありませんが、その周りで何かを開発しています。
何が起こっているのかというと、数秒後、port.Read(RxHolder, 0, 1);
InvalidOperationExceptionと言ってエラーが発生し、ポートが閉じられます。オブジェクトは存在し、どこにport.close()
も呼び出されていません。
重要な情報が追加された場合は、Windows 7 64ビットマシンでVisualC#2010Expressを実行しています。
if (port.IsOpen)
{
while (port.BytesToRead > 0)
{
// Read one byte
port.Read(RxHolder, 0, 1);
// Process it
ProcessRxedByte(RxHolder[0]);
}
}