我想连接到一个连接到初始波特率300的串行端口(COM4)的设备,该设备可以使用命令将其波特率更改为9600,我的Java代码将此命令发送到设备并更改设备的波特率,但我不知道如何在不关闭连接的情况下更改程序中的波特率。当连接关闭时,设备恢复到初始波特率。
有没有办法在连接打开时改变Java中的波特率?
在我向设备发送“更改波特率”命令后,执行以下代码时设备丢失连接。我认为这个方法只是用于初始化,而不是用于在通信过程中改变波特率。
port.setSerialPortParams(
9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
设备很可能检测到 DTR 或 RTS。 Windows 将在端口打开时切换它们,并在端口关闭时恢复它们。因此,您有 3 个选择。我不确定哪一个可以工作——你可能必须全部尝试一下,我没有带串口的 Windows 盒子。
使用不同的Java库,例如librxtx的“gnu.io.RXTXPort”,它可以在不关闭连接的情况下更改波特率。
尝试使用Windows“模式”命令:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/mode.mspx 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 电缆,并且很容易制作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)