接続が開いている間、SerialPortのボードレートを変更します
-
26-10-2019 - |
質問
SerialPortクラスを使用して外部デバイスと通信しています。 1秒あたり300ボーで通信を開始しますが、最初の「ハンドシェイク」の後、デバイスで指定されたボーレート(通常は9600 bps)に切り替える必要があります。
ボーレートを上げた後、コミュニケーションを続けようとする試みに失敗しましたが、その理由はわかりません。それが私の質問につながります:ボーレートを変更する適切な方法は何ですか?接続が開いている間に実行できますか、それとも最初に接続を閉じる必要がありますか?
ドキュメントでこれに関する情報を見つけることができませんでした...
私は両方を試してみましたが、両方の方法で失敗しました。
解決 2
SerialPort.Baudrateが開いている間に変更できることがわかります。しかし、@grooleが答えて言及されているserialport.discardinbufferは良いヒントです!
他のヒント
これまでの私の経験から、最も安全な賭けは、最初に接続を閉じ、レートを変更してから再び開くことです。速度が変更されていることを確認するために、いくつかの制御文字を送信するのを待っているため、デバイスはこれを気にしません。
ポートが開いている間にボーレートを変更することはできますが、これによりバッファーで無効な文字が検出される可能性があります(デバイスとプロトコルによっては)。 SerialPort.DiscardInBuffer()
).
所属していません StackOverflow