我们有一个电机控制器,它实现了一个USB->虚拟COM端口,其固定波特率为921600(手动甚至指出波特率不能改变)。我发现如果我使用像Terminal这样的终端程序,我可以通过921600的自定义波特率并与仪器进行通信,没有任何问题。我们使用的是Windows 7专业版,64位版本。
但是,当我尝试使用Python 2.7.10(32位)在PySerial(v.2.7)中执行此操作时:
import serial
ser = serial.Serial("COM3",921600)
我总是遇到错误,说参数不正确。
文件" C:\ Python27 \ lib \ site-packages \ serial \ serialwin32.py",第202行,在_reconfigurePort中 引发ValueError("无法配置端口,某些设置错误。原始消息:%r"%ctypes.WinError()) ValueError:无法配置端口,有些设置错误。原始消息:WindowsError(87,'参数不正确。')
有效的Baudrates似乎是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应该能够处理更高的传输速率,尤其是许多USB IC如FTDI和CH430可以处理比115200更高的波特率。
有没有人知道如何让pySerial在Windows中接受比115200更高的波特率?
答案 0 :(得分:2)
我尝试921600并且没有任何问题。
您的适配器不支持高速rs232。
您需要购买CP21XX或等转换器。
Moxa或Lantronix是一个好品牌(测试和使用)。
试穿:win7x64,Python2.7x32