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