【问题标题】:How to change baud rate without closing the connection?如何在不关闭连接的情况下更改波特率?
【发布时间】:2011-07-09 15:19:02
【问题描述】:

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

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

在我向设备发送“更改波特率”命令后,当执行以下代码时,设备失去了连接。我认为这种方法只是用于初始化,而不是用于在通信过程中更改波特率。

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

【问题讨论】:

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

标签: java serial-port baud-rate


【解决方案1】:

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

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

  2. 尝试使用windows“mode”命令: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/mode.mspx 。 尝试将 RTS 和 DSR 都设置为“on”和“off”,看看是否有任何设置有帮助。请注意,如果此操作成功,设备将永远不会重置,即使您退出 java 程序也是如此。您必须再次调用“模式”才能重置设备。

  3. 获取不通过 DTR 信号的特殊串行电缆。这些被称为“3 线”(仅限 RX 和 TX)或“5 线”(RX/TX + RTS/CTS)RS232 电缆,并且很容易制作。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 2011-04-15
      • 2016-05-18
      • 2014-02-18
      • 2014-07-04
      • 2020-11-20
      相关资源
      最近更新 更多