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. 使用不同的 Java 库,例如 librxtx 的“gnu.io.RXTXPort”,它可以在不关闭连接的情况下更改波特率。

  2. 尝试使用 Windows“模式”命令: http: //www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/mode.mspx。尝试将 RTS 和 DSR 都设置为“on”和“off”,看看是否有任何设置有帮助。请注意,如果此操作成功,设备将永远不会重置,即使您退出 java 程序也是如此。您将不得不再次调用“模式”来重置设备。

  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 回答