シリアル設定に入ると、シリアル接続が閉じられます。アプリに着信するシリアルに間違ったボーレートを選択すると、フリーズし、デバッグがまだ機能しているためデバッグもできませんが、何をしているのかわかりません。
最終的に、私の質問は、選択したボーレートが正しいかどうかを確認する方法と、シリアルがアプリケーションをフリーズしないことを確認する方法です。
シリアル設定に入ると、シリアル接続が閉じられます。アプリに着信するシリアルに間違ったボーレートを選択すると、フリーズし、デバッグがまだ機能しているためデバッグもできませんが、何をしているのかわかりません。
最終的に、私の質問は、選択したボーレートが正しいかどうかを確認する方法と、シリアルがアプリケーションをフリーズしないことを確認する方法です。
私はついにエラーをスローするようになりました。sp.ReadLine();を呼び出そうとしているとき。ReadLine()がタイムアウトしたことを示しています。タイムアウトは500です。
私はちょうど使用しました:
try {
data = sp.Readline();
}
catch (TimeoutException errorEvent)
{
//Write to console the errorEvent (This operation has timed out)
//Message to user to pick correct baud
tbConsole.AppendText(Environment.NewLine);
tbConsole.AppendText("Incorrect Baud Rate: Please select a new baud rate");
tbConsole.AppendText(Environment.NewLine);
tbConsole.AppendText(errorEvent.Message);
tbConsole.ScrollToEnd();
//Show baud rate settings dialog
}
残念ながら、間違ったボーレートを選択することはPEBKACです。これは、ユーザーに選択を許可している場合、ユーザーが間違ったことをするのを防ぐことができないためです。
彼らが正しいボーレートを選択することを確認する唯一の本当の方法は、ハードウェアを制御できる場合は選択させないこと、使用しているハードウェアを選択できるようにすること、ボー、dts、xonなどを構成することだと思います。それからではなく、彼らに指定させてください。
正しく思い出せば、SerialPortは別のスレッドで実行され、イベントをUIにポストバックします。したがって、ボーレートが正しくない場合は、これが原因で誤ったデータを取得している可能性があります。