首页 > 解决方案 > 无法在 Linux (Xubuntu 18.04) 上使用 pyserial 读取/写入

问题描述

我有一个专有设备,它通过 USB 电缆连接到我的计算机。

在我的 Xubuntu 安装上运行代码时,我无法成功读取(或写入,或两者?)。

注意:相同的逻辑在Windows(在 7、8 和 10 上测试)和Mac(在 Yosemite 和 Mojave 上测试)上运行得非常完美。

这是我试图运行的代码(为简单起见,硬编码了一些值):

ser = serial.Serial('/dev/ttyACM0', 500000, timeout = 0.03, write_timeout = 0.015)
ser.write(bytes([248, 40, 0]))
ser.flush()
reply = ser.read(40)

当前行为

设备正在运行一些代码来响应它收到的数据包。在这个初始数据包中,我的 Python 代码请求设备状态的完整副本,它以高达 40 字节的数组接收该副本。

在 Linux 上,返回以下内容而不是请求的 40 个字节: [248, 13, 10, 40, 13, 10, 0, 13, 10]

我发现有趣的是它返回的字节与我尝试写入的字节完全相同,它们之间有 13 和 10。

预期行为 在 Mac 和 Windows 上,都会返回类似这样的内容(内容并不那么重要):

[71, 89, 65, 32, 1, 4, 50, 0, 27, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 1, 255, 255, 136, 1, 255, 255, 255, 255]

预期行为与 Mac 和 Windows 上的行为相同。

额外信息

任何信息/想法将不胜感激!

[EDIT2]问题变得更加奇怪了。这是我今天尝试的:

标签: linuxpython-3.xubuntupyserial

解决方案


如果在将用户添加到组后没有这样做,请尝试在重新启动计算机后执行此操作dialout

连接时尝试发送与您的设备相关的附加信息,例如XON/XOFFparitystopbits

# coding: utf-8在脚本的开头添加。


推荐阅读