如何在 Keyspan(或其他)USB 转串行/RS232 转换器上设置奇偶校验/停止位?(stty 不起作用)

如何在 Keyspan(或其他)USB 转串行/RS232 转换器上设置奇偶校验/停止位?(stty 不起作用)

我有两个不同的 USB 转串口适配器,一个 Keyspan USA-19HS 和一个可插拔 USB 串口转换器。将其中一个插入我的 Ubuntu 20.10 Lenovo X1 笔记本电脑都会创建一个 /dev/ttyUSB0,我可以打开并读取它。

然而,没有组合的标志在pyserial当通过 python 读取串行端口时,或者stty通过读取端口时parenb 或 cstopb 参数hd似乎会改变我可以从串行端口读取的数据。就好像驱动程序忽略了奇偶校验/停止位参数。我正尝试从使用偶校验和 1 个停止位的串行源读取数据。

有点可疑的是,在我的控制台日志中,看起来 Keyspan 驱动程序没有加载任何固件。这是我在执行dmesg -n 8并插入 Keyspan 转换器后在控制台日志中看到的内容:

Jan 11 16:40:20 X1-6th kernel: [ 8099.025705] usbcore: registered new interface driver keyspan
Jan 11 16:40:20 X1-6th kernel: [ 8099.025717] usbserial: USB Serial support registered for Keyspan - (without firmware)
Jan 11 16:40:20 X1-6th kernel: [ 8099.025724] usbserial: USB Serial support registered for Keyspan 1 port adapter
Jan 11 16:40:20 X1-6th kernel: [ 8099.025730] usbserial: USB Serial support registered for Keyspan 2 port adapter
Jan 11 16:40:20 X1-6th kernel: [ 8099.025736] usbserial: USB Serial support registered for Keyspan 4 port adapter
Jan 11 16:40:26 X1-6th kernel: [ 8105.207664] usb 1-2: new full-speed USB device number 9 using xhci_hcd
Jan 11 16:40:26 X1-6th kernel: [ 8105.376377] usb 1-2: New USB device found, idVendor=06cd, idProduct=0121, bcdDevice= 1.00
Jan 11 16:40:26 X1-6th kernel: [ 8105.376386] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Jan 11 16:40:26 X1-6th kernel: [ 8105.376390] usb 1-2: Product: Keyspan USA-19H 
Jan 11 16:40:26 X1-6th kernel: [ 8105.376394] usb 1-2: Manufacturer: Keyspan, a division of InnoSys Inc.
Jan 11 16:40:26 X1-6th kernel: [ 8105.381746] keyspan 1-2:1.0: Keyspan 1 port adapter converter detected
Jan 11 16:40:26 X1-6th kernel: [ 8105.381952] usb 1-2: Keyspan 1 port adapter converter now attached to ttyUSB0

我有各种 Keyspan 固件,包括 /lib/firmware/keyspan 中的 usa19.fw,来自http://www.chrisdanielson.com/2012/04/10/linux-firmware-keyspan-usb-to-serial/

有关 Linux USB 串行支持的一些信息,请访问https://www.kernel.org/doc/html/latest/usb/usb-serial.html,但我没有看到一个好的解决方案。

是否有人知道如何使用 keyspan 适配器有效地设置部分/停止位,或者知道有哪些 USB 串行适配器支持 Linux 来执行此操作?

答案1

事实证明驱动程序运行良好。源使用的是非标准波特率。Pyserial 支持自定义波特率,因此一旦我知道它使用的是哪种波特率,数据就可以以偶校验方式顺利传输。

相关内容