6

初期ボーレート300でシリアルポート(COM4)に接続されているデバイスに接続したいのですが、デバイスはコマンドでボーレートを9600に変更できます。私のJavaコードはこのコマンドをデバイスに送信し、デバイスのボーレートが変更されました。しかし、接続を閉じずにプログラムのボーレートを変更する方法がわかりません。接続が閉じられると、デバイスは初期ボーレートに戻ります。

接続が開いているときにJavaでボーレートを変更する方法はありますか?

「ボーレートの変更」コマンドをデバイスに送信した後、以下のコードを実行すると、デバイスは接続を失いました。この方法は、通信の途中でボーレートを変更するためではなく、初期化のためだけのものだと思います。

port.setSerialPortParams(
    9600,
    SerialPort.DATABITS_8,
    SerialPort.STOPBITS_1,
    SerialPort.PARITY_NONE);
4

2 に答える 2

3

ほとんどの場合、デバイスは DTR または RTS を感知します。Windows は、ポートが開いているときにそれらを切り替え、ポートが閉じているときにそれらを復元します。したがって、3 つのオプションがあります。どれが機能するかはわかりません。すべてを試す必要があるかもしれません。シリアルポート付きの Windows ボックスはありません。

  1. librxtx の「gnu.io.RXTXPort」など、接続を閉じずにボーレートを変更できる別の Java ライブラリを使用します。

  2. Windows の「モード」コマンドを使用してみてください: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/mode.mspx。RTS と DSR の両方を「オン」と「オフ」にして試し、設定が役立つかどうかを確認します。これが成功すると、Java プログラムを終了しても、デバイスはリセットされないことに注意してください。デバイスをリセットするには、「mode」を再度呼び出す必要があります。

  3. DTR 信号を通さない特別なシリアル ケーブルを入手してください。これらは「3 線」(RX および TX のみ) または「5 線」(RX/TX + RTS/CTS) RS232 ケーブルと呼ばれ、簡単に作成できます。

于 2011-08-08T21:33:53.917 に答える
0

デバイスに接続するときは、常にボー レートを指定します。そうしない場合でも、使用するソフトウェア/API がそれを行います。おそらく、API はデフォルトのボー レート 300 でこのデバイスに接続します。ボー レートは、デバイス用ではなく、シリアル接続用に定義されています。接続されていない場合、ボーレートはありません。

于 2011-07-19T13:32:53.590 に答える