-1

現在、私はC#を使用したシリアルポートプログラミングで忙しく、このようなことは初めてです。1 つのコンソール アプリを作成しました... このアプリでは、RS 232 デバイスを 200 ミリ秒ごとにポーリングしています。デバイスは、毎回 1 バイトの応答でポーリングに応答する必要があります。

ほとんどの場合、Data Received イベントを通じて期待されるバイトを取得しています。しかし、データ受信イベントが発生しない場合があります...さらに、各ポーリングの後に使用可能なバイトを読み取ろうとしました..期待されるバイトを取得できません。

運が悪いことに多くの時間を費やした後、シリアルポートアプリの実行中に誤ってブラウザーを開いてしまいました。突然、ポーリングごとにデータ受信イベントが発生し始めました...ブラウザが開いた後、数秒後にイベントが再び発生しませんでした。他のアプリをいくつか開いてみましたが、同じ動作が続きました。数秒間、イベントが発生し、その後はイベントが発生しません。CPU がビジー状態であれば、データ受信イベントは正常に機能するようです。

誰かが同じ問題に遭遇できますか? Data Received イベントが毎回確実に発生するようにする方法についてアドバイスをお願いします。ありがとう!

以下のサンプルコードを見つけてください。

Every 200 ms.


Serial.Parity = System.IO.Ports.Parity.Mark;
Thread.Sleep(2);
Serial.Write(0x01, 0, 1);
Thread.Sleep(1);
Serial.Parity = System.IO.Ports.Parity.Space;
Thread.Sleep(2);`
4

1 に答える 1