Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不关闭连接的情况下更改波特率?_Java_Serial Port_Baud Rate - Fatal编程技术网

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

Java 如何在不关闭连接的情况下更改波特率?,java,serial-port,baud-rate,Java,Serial Port,Baud Rate,我想连接到一个连接到串行端口(COM4)的设备,初始波特率为300,该设备可以通过命令将其波特率更改为9600,我的Java代码将此命令发送到设备,设备的波特率更改,但我不知道如何在不关闭连接的情况下更改程序中的波特率。连接关闭后,设备恢复到初始波特率 当连接打开时,有没有办法改变Java中的波特率 在我向设备发送“更改波特率”命令后,当以下代码执行时,设备失去连接。我认为这种方法只是为了初始化,而不是为了在通信过程中改变波特率。 port.setSerialPortParams( 96

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

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

在我向设备发送“更改波特率”命令后,当以下代码执行时,设备失去连接。我认为这种方法只是为了初始化,而不是为了在通信过程中改变波特率。
port.setSerialPortParams(
    9600,
    SerialPort.DATABITS_8,
    SerialPort.STOPBITS_1,
    SerialPort.PARITY_NONE);

连接到设备时,始终指定波特率。即使您不这样做,您使用的软件/API也会为您做到这一点。您的API很可能以默认波特率300连接到此设备。
波特率是为串行连接而不是为设备定义的。一旦未连接,就没有波特率。

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

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

  • 尝试使用windows“模式”命令: . 尝试将RTS和DSR设置为“开”和“关”,看看是否有任何设置有帮助。请注意,如果此操作成功,即使退出java程序,设备也永远不会重置。您必须再次调用“模式”以重置设备

  • 获得一个特殊的串行电缆,它不会传递DTR信号。这些被称为“三线”(仅限RX和TX)或“五线”(RX/TX+RTS/CTS)RS232电缆,且易于制作


  • ... 你是如何关闭连接的?通常串行连接没有“打开”和“关闭”状态。没有办法“检测”某人已经离开(也许除了超时)。