2

次のリンクと同様の問題があります。接続を閉じずにボーレートを変更するには? . しかし、Java の代わりに C# を使用しています。ボー レート 300 から始めます。その後、握手をした後、ボー レートを 4800 に変更する必要があります。これを行うコマンドをデバイスに送信します。そして、シリアルポートのボーレートを変更します。その後、デバイスとの通信を続行できません。(300 ボーのままでデバイスに 300 ボーのコマンドを送信すると、通信を続行できます)

このデバイスからも読み取るサードパーティのソフトウェアがあります。そのソフトウェアが実行されているときにポートをリッスンしています。デバイスに送信しているものと同じコマンドを送信します。4800 ボーを設定するコマンドをデバイスに送信し、デバイスから応答を取得できます。ボー変更中にポートを閉じたり、再度開いたりすることはありません。私も同じことをしなければなりません。しかし、4800 ボーに変更するコマンドを送信しても、デバイスから応答がありません。

私はあなたの答えを待っています。ありがとう、フェルダ

これは、プロセス「ReadY.vshost.exe」によって開かれたシリアルポート監視プログラムの出力です (PID: 2608)

01 42 30 03 71 .B0.q

回答: 09.08.2011 10:55:40.81864 (+0.2656 秒)

06 .

リクエスト: 09.08.2011 10:55:41.06864 (+1.2500 秒)

2F 3F 31 31 39 39 39 30 30 34 21 0D 0A /?11999004!..

回答: 09.08.2011 10:55:41.58464 (+0.5156 秒)

2F 53 54 52 34 5F 42 53 4D 31 33 31 0D 0A /STR4_BSM131..

リクエスト: 09.08.2011 10:55:42.31864 (+0.2969 秒)

06 30 34 31 0D 0A .041..

4

2 に答える 2

2

私の経験では、ボーレートを切り替えるには、シリアル ポート ハードウェアを閉じてから再度開く必要があります。試してみることをお勧めします。ボー レート スイッチ コマンドを送信してポートを閉じ、ボー レートを設定してから、ポートを再度開きます。ポートの開閉は、反対側のデバイスに対して透過的である必要があります (CTS/RTS/DTR/DSR 回線を使用している場合を除く)。

于 2011-08-09T07:59:43.883 に答える
1

デバイスのボー レートを変更するには、次の手順に従います。例:ボーレート 1200 で通信を開始する。

  1. ボーレートを 1200 に変更するためのデータ コマンドを送信します。
  2. デバイスから確認を受信します。
  3. ACK が適切な場合は、 を設定しPort.BaudRate=1200ます。

次にボーレートを 4800 に変更するには、次の手順に従います。

  1. ボーレートを 4800 に変更するためのデータ コマンドを送信します。
  2. デバイスから確認を受信します。
  3. ACK が適切な場合は、 を設定しPort.BaudRate=4800ます。

注: コントローラー デバイスから ACK を受信した後、Port.BaudRate を変更します。通信は、以前に設定された BaudRate で開始されます。

于 2011-12-27T08:58:59.217 に答える