0

私がC#(.Net Framework 2.0)で作業しているプログラムでは、「リモートモード」に切り替えて、Bluetooth経由でASCIIデータを別の画面に送信する機能が必要です。私はあまり経験豊富なプログラマーではなく、ネットワーキングについては何も知りませんが、昨日SerialPortクラスをいじくり回した後、Bluetooth接続された2つのデバイス間でうまく機能する小さなチャットプログラムを作成することができました。 。

ただし、チャットプログラムは、ユーザーがボタンを押してデータを「送信」した場合にのみデータを送信しました。2つのデバイスが正しく接続されていない場合はTimeoutException、エラーメッセージとともにをスローしました。私が現在取り組んでいるプログラムははるかに大きく、COMポートが開いている限り常にデータを書き込もうとします。

つまり、2つのデバイスがすぐに接続されていない場合は、をスローする必要がありTimeoutException、正しく接続されるまで何度も何度もスローを続けます。それは完全に受け入れられません。プログラムの速度が低下し、使用できなくなり、デバッグ出力に「TimeoutExceptionThrownHere」エラーメッセージが表示されます。

これを行う方法についてより良い解決策はありますか?2つのデバイスが接続されていることを確認できた場合にのみ、データを書き出すことができる方法。常にチェックする必要はありません(その後、チェック中にタイムアウトエラーが発生します)。

4

1 に答える 1

1

いいえ。シリアル接続はステートレスです。

これは、誰かが反対側にいるかどうかわからないことを意味します。何か意味のあるものが戻ってきているかどうかを確認して、何かを送信するだけです。

この最も簡単な例は、古き良きアナログモデムです。接続されているかどうかを確認するには、を送信して、が戻っATてくるかどうかを確認しOKます。

したがって、ソリューションは正しいものですが、適切に実装されていない可能性があります。接続構築シーケンスをに入れる必要がありますBackgroundWorker。したがって、これらの試行は、GUIがユーザーに応答している間、別のスレッドで実行されます。

于 2010-08-13T14:04:01.163 に答える