SerialPort
クラス
を使用してC#で開発しています。SerialPort.Write()
ブロッキング方法です。書き込みを停止したい場合、このメソッドを終了するにはどうすればよいですか? スレッドを使用して書き込みます。書き込みを停止したいときにこのスレッドを中止しますが、COM ポートは書き込みを続けます。
何か案は?
どうもありがとう。
私の基本的な英語で申し訳ありません。
SerialPort
クラス
を使用してC#で開発しています。SerialPort.Write()
ブロッキング方法です。書き込みを停止したい場合、このメソッドを終了するにはどうすればよいですか? スレッドを使用して書き込みます。書き込みを停止したいときにこのスレッドを中止しますが、COM ポートは書き込みを続けます。
何か案は?
どうもありがとう。
私の基本的な英語で申し訳ありません。
シリアル ポートのストリームと UART の両方がバッファリングを行います。
最善の方法は、小さなパッケージ (行) を送信し、書き込みスレッドを中断して、最後の送信パッケージを送信することです。市民的な方法で書き込みを停止できる場合は、 DiscardWriteBuffer() メソッドもあります。
小さいパッケージが選択肢にない場合は、少なくとも WriteBufferSize を小さい値 (ただし > 0) に設定できます。
SerialPort.Write()
使用 のブロック状態から抜け出すためSerialPort.DiscardOutBuffer()
。これは原因IOException
ですが、ブロックされた状態からきれいに抜け出すことができる限り、それは問題ありません。