私は8つのCOMポートで動作するアプリケーションを開発しています。データがCOMポートの1つから受信されると、イベントハンドラーが呼び出され、アプリケーションはCOMポート経由で受信したメッセージのラッパーを作成し、TCP経由で送信しますリモートホスト。実はラッピング後はイーサネット系ネットのどこかのデバイスに対するコマンド(測定開始コマンド)になります。
COMポートを操作するためにSerialPortとSerialDataReceivedEventHandlerを使用しています。問題は、フォームを介してすべての COM ポートに対して異なるタイムアウト (0 ~ 1000 ミリ秒) が指定されていることです。このタイムアウトの後、別のコマンドを送信して、デバイスからデータを取得する必要があります (get data コマンド)。
- このコマンドは、8 つの COM ポートごとに異なります。
- このコマンドは、COM ポート経由でデータを受信し、最初のコマンドを送信した後にのみ送信する必要があります。
- 2 つのコマンド間のタイムアウトは、COM ポートごとに異なります
タイムアウトの構成について何か提案はありますか? ありがとう。
私には 1 つの考えがありますが、それが可能かどうかはわかりません。COM ポートごとに 8 つのイベント ハンドラー関数があります。
...something
sendFirstCommand();
Thread.Sleep(comPortNTimeout);
sendSecondCommand();
それらのすべてで同じ構造を使用できますか? たとえば、データ Thread.Sleep() が 2 番目のポートのハンドラーで呼び出される場合、1 番目のポートのハンドラーはフリーズしませんか?