シリアル ポート dataReceived イベント データの受信停止を通知する C#.Net のイベント
-
05-07-2019 - |
質問
私はC#でシリアルポートの実装に取り組んでいます。SerialPort からデータを取得し、そのデータをコレクション (グローバルに宣言) のキュー タイプに追加しています。私はBackgroundWorkerスレッドを使用してQueue内のデータを処理しています。問題はそれです。シリアルポートがデータの送信とデータの受信を停止した場合、データの受信が停止します。キューには処理が必要なデータがまだ残っています。SerialPort からデータが来ていない、つまり Port_dataReceived がデータの受信を停止していることを伝える方法はありますか。キュー内にあるどんなデータでも処理できるようにします。なぜなら、今回はシリアル ポートから来るデータはなく、キュー内のデータが最後に処理されるデータであることを確信しているからです。前もって感謝します - チェタン
解決
System.IO.Ports.SerialPort を使用している場合、何かが組み込まれているとは思えません。自分でコーディングする必要があります。
DataReceived イベントを使用して、受信したデータを処理できない理由はありますか?
SerialPort リスナーが別のスレッドで動作するという事実に対処する必要があるため、これは注意が必要です。したがって、スレッドの安全性について心配する必要があるかもしれませんが、グローバル DateTime 変数を設定し、DataReceived イベントでそれを更新してからチェックすることもできます。コード内で、最後にデータを受信した時間が次の時間を超えているかどうかを確認します。 n 秒。
所属していません StackOverflow