如何在不关闭连接的情况下更改波特率?

我想连接到一个连接到串口(COM4)的设备,初始波特率为300,设备可以用命令将其波特率改为9600,我的Java代码将此命令发送到设备并更改设备的波特率,但我不知道如何在不关闭连接的情况下更改程序中的波特率。 连接关闭后,设备将恢复到初始波特率。

在连接打开时有没有办法改变Java中的波特率?

我将“更改波特率”命令发送到设备后,当下面的代码执行设备丢失了连接。 我认为这种方法只是用于初始化,而不是用于改变通信中间的波特率。

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

设备最有可能感测到DTR或RTS。 当端口打开时,Windows将切换它们,并在端口关闭时恢复它们。 因此,您有3个选项。 我不确定哪一个会起作用 – 你可能要全部尝试,我没有带有串口的windows box。

  1. 使用不同的Java库,如librxtx的“gnu.io.RXTXPort”,它可以在不关闭连接的情况下更改波特率。

  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电缆,并且易于制作。

您始终在连接设备时指定波特率。 即使您没有,您使用的软件/ API也适合您。 有可能您的API连接到此设备,默认波特率为300.波特率是为串行连接定义的,不是为设备定义的。 一旦没有连接,就没有波特率。