2009-07-29 9 views
0

私はC#でシリアルポートの実装を行っています。 私はSerialPortからデータを取得しており、そのデータをコレクションのキュータイプ(グローバルに宣言されている)に追加しています。 BackgroundWorkerスレッドを使用してQueueのデータを処理しています。問題はそれです。シリアルポート停止の場合データとデータ受信の受信停止データの受信処理が必要なキューにまだデータが残っています。 SerialPortからのデータがない、つまりPort_dataReceivedがデータの受信を停止していることを示す方法はありますか?キューにあるデータはすべて処理できます。今度は、シリアルポートからデータが来ないことと、キュー内のデータが最後に処理される残りのデータであることを確認します。事前のおかげ - あなたはSystem.IO.Ports.SerialPortを使用している場合チェタンシリアルポートのデータ受信イベントの停止を通知するC#.Netのイベント

答えて

1

、その後、私は内蔵のものがあると信じていないあなたはそれを自分でコーディングする必要があると思います。

DataReceivedイベントを使用してデータが入ってくると処理できない理由はありますか?

これは、シリアルポートリスナーが別のスレッドで動作するため、スレッドの安全性について心配する必要があるかもしれないという事実に対処する必要があるため、扱いにくいですが、グローバルDateTime変数を設定し、DataReceivedイベント最後にデータが受信されたかどうかをコード内で確認して、n秒を超えていないかどうかを確認します。

+0

ありがとうございました。良い提案。 –

関連する問題