如何让 PySerial 接受 921600 波特率

How to get PySerial to accept 921600 Baud rate

我们有一个电机控制器,它实现了一个USB->虚拟COM端口,它有一个固定的波特率921600(手册甚至说波特率不能改变)。我发现如果我使用像 Terminal 这样的终端程序,我可以通过 921600 的自定义波特率与仪器通信,没有任何问题。我们正在使用 Windows 7 pro,64 位版本。

但是,当我尝试使用 Python 2.7.10(32 位)在 PySerial (v.2.7) 中执行此操作时,如下所示:

import serial
ser = serial.Serial("COM3",921600)

老是遇到参数不对的错误

File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 202, in _reconfigurePort raise ValueError("Cannot configure port, some setting was wrong. Original message: %r" % ctypes.WinError()) ValueError: Cannot configure port, some setting was wrong. Original message: WindowsError(87, 'The parameter is incorrect.')

有效的波特率似乎是 serialwin32.py

中列出的波特率
BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
             9600, 19200, 38400, 57600, 115200)

当我使用列表中的任何波特率时,我可以打开串行端口(但不一定能够与仪器通信)。

只是将 921600 百添加到 serialwin32.py 中的此列表中不会执行任何操作。我已经搜索了几个论坛和网站,到目前为止似乎没有人知道如何在 Windows 中设置更高的波特率。高于 115200 的波特率在旧版本 Windows 中过去是不可靠的,但我认为 Windows 7 现在应该能够处理更高的传输速率,尤其是许多 USB IC,如 FTDI 和 CH430 可以处理比 115200 高得多的波特率。

有谁知道在 Windows 中让 pySerial 接受比 115200 更高的波特率的方法吗?

我试了 921600 没问题。

您的适配器不支持高速 rs232。

您需要购买 CP21XX 或同等转换器。

Moxa 或 Lantronix 是不错的品牌(测试和使用)。

试用:win7x64,Python2.7x32