我们有一个电机控制器,该控制器实现了USB-> Virtual COM端口,该端口的固定波特率为921600(手册甚至指出无法更改波特率)。我发现如果使用终端程序之类的终端程序,则可以通过自定义波特率921600并与仪器进行通信,而不会出现任何问题。我们使用的是Windows 7专业版64位版本。

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

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


我总是遇到错误,指出该参数不正确。


  _reconfigurePort中的文件“ C:\ Python27 \ lib \ site-packages \ serial \ serialwin32.py”,第202行
      引发ValueError(“无法配置端口,某些设置错误。原始消息:%r”%ctypes.WinError())
  ValueError:无法配置端口,某些设置错误。原始消息:WindowsError(87,'参数不正确。')


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

BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
             9600, 19200, 38400, 57600, 115200)


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

只需在serialwin32.py的此列表中添加921600,就不会做任何事情。我搜索了多个论坛和网站,到目前为止,似乎没有人对如何在Windows中设置更高的波特率有任何答案。 115200以上的波特率过去在较旧版本的Windows中并不可靠,但我认为Windows 7现在应该能够处理更高的传输速率,尤其是像FTDI和CH430这样的许多USB IC可以处理比115200高得多的波特率。

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

最佳答案

我尝试921600,没有任何问题。

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

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

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

尝试:win7x64,Python2.7x32

关于python - 如何使PySerial接受921600波特率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31420390/

10-12 16:05