我想连接到连接到串口(COM4)且初始波特率为300的设备,设备可以通过命令将其波特率更改为9600,我的Java代码将此命令发送到设备并且波特率为设备已更改,但我不知道如何在不关闭连接的情况下更改程序中的波特率。当连接关闭时,设备将恢复到初始波特率。
连接打开时,有没有办法在Java中更改波特率?
在我向设备发送“更改波特率”命令后,当下面的代码执行设备丢失了连接。我认为这种方法只是用于初始化,而不是用于在通信过程中改变波特率。
port.setSerialPortParams(
9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
答案 0 :(得分:3)
设备最有可能感知到DTR或RTS。当端口打开时,Windows将切换它们,并在端口关闭时恢复它们。因此,您有3个选项。我不确定哪一个会起作用 - 你可能要全部尝试,我没有带有串口的windows box。
使用不同的Java库,例如librxtx的“gnu.io.RXTXPort”,它可以在不关闭连接的情况下更改波特率。
尝试使用windows“mode”命令: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/mode.mspx。 尝试RTS和DSR“开”和“关”,看看是否有任何设置有帮助。请注意,如果成功,即使退出java程序,设备也永远不会被重置。您将不得不再次调用“mode”来重置设备。
获取一条特殊的串行电缆,它不会传递DTR信号。这些被称为“3线”(仅限RX和TX)或“5线”(RX / TX + RTS / CTS)RS232电缆,并且易于制作。
答案 1 :(得分:0)
连接设备时始终指定波特率。即使您没有,您使用的软件/ API也适合您。有可能您的API连接到此设备,默认波特率为300。 波特率是为串行连接定义的,不是为设备定义的。一旦没有连接,就没有波特率。