シリアル ポート dataReceived イベント データの受信停止を通知する C#.Net のイベント

StackOverflow https://stackoverflow.com/questions/1201036

  •  05-07-2019
  •  | 
  •  

質問

私はC#でシリアルポートの実装に取り​​組んでいます。SerialPort からデータを取得し、そのデータをコレクション (グローバルに宣言) のキュー タイプに追加しています。私はBackgroundWorkerスレッドを使用してQueue内のデータを処理しています。問題はそれです。シリアルポートがデータの送信とデータの受信を停止した場合、データの受信が停止します。キューには処理が必要なデータがまだ残っています。SerialPort からデータが来ていない、つまり Port_dataReceived がデータの受信を停止していることを伝える方法はありますか。キュー内にあるどんなデータでも処理できるようにします。なぜなら、今回はシリアル ポートから来るデータはなく、キュー内のデータが最後に処理されるデータであることを確信しているからです。前もって感謝します - チェタン

役に立ちましたか?

解決

System.IO.Ports.SerialPort を使用している場合、何かが組み込まれているとは思えません。自分でコーディングする必要があります。

DataReceived イベントを使用して、受信したデータを処理できない理由はありますか?

SerialPort リスナーが別のスレッドで動作するという事実に対処する必要があるため、これは注意が必要です。したがって、スレッドの安全性について心配する必要があるかもしれませんが、グローバル DateTime 変数を設定し、DataReceived イベントでそれを更新してからチェックすることもできます。コード内で、最後にデータを受信した時間が次の時間を超えているかどうかを確認します。 n 秒。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top