【发布时间】:2015-07-15 02:15:36
【问题描述】:
我们有一个电机控制器,它实现了一个 USB->Virtual COM 端口,该端口具有 921600 的固定波特率(手册甚至声明波特率不能更改)。我发现如果我使用像终端这样的终端程序,我可以通过自定义波特率 921600 并与仪器通信没有问题。我们使用的是 Windows 7 pro,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 raise ValueError("Cannot configure port, some setting was wrong. Original message: %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 中设置这个更高的波特率。在旧版本的 Windows 中,115200 以上的波特率过去是不可靠的,但我认为 Windows 7 现在应该能够处理更高的传输速率,尤其是许多 USB IC (如 FTDI 和 CH430)可以处理比 115200 高得多的波特率。
有谁知道如何让 pySerial 在 Windows 中接受比 115200 更高的波特率?
【问题讨论】:
-
I assume that Windows 7 should be able to handle a much higher transfer rate now-- 我认为 Windows 中有效波特率的规范很可能多年来没有改变,因为以您的速度运行的 RS232 端口的潜在和实际应用程序缺乏'正在提议。 -
你的电机控制器是什么牌子的?
-
纽波特 ESP301。它有一个固定在 921600 的 USB 到 VCOM。奇怪的是我可以用终端程序与它交谈,但我无法让 PySerial 获取 921600,所以我认为它与硬件没有任何关系。这是新端口上的直接 USB-B 到我笔记本电脑上的 USB-A。 Windows 将其检测为 COM 端口。