我正在尝试使用pyserial与ubuntu客户机中的串口通信,而主机是Windows 7。
此串口由ubuntu中的usb驱动程序启用,因此我只需在虚拟机设置中启用usb设备。
我能够使用屏幕程序进行通信并查看响应,但使用pyserial我无法看到响应,但我能够发出命令。
请注意,相同的pyserial代码在普通的ubuntu中工作,而不是虚拟机guest,并且当我重新启动它时,它也是第一次工作。
我用来从缓冲区接收的代码就是这个
def serialExecuteCommand(serialPort, command):
serialPort.write(command + '\r\n')
out = ''
time.sleep(1)
while serialPort.inWaiting() > 0:
out += serialPort.read(1)
return out
我正在使用此配置创建串行端口,我在Windows中为同一串口测试并使用超级终端。
serialPort = serial.Serial(
port= port,
baudrate=57600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS)
我可以用另一种方式做到这一点,只是为了获得响应,而不是使用pyserial,因为屏幕工具正常运行?
更新1
对特定设备使用pyserial串口后,stty设置会发生变化
speed 57600 baud; line = 0;
eof = ^A; min = 1; time = 0;
-brkint -icrnl ixoff ixany -imaxbel
-opost -onlcr
-icanon -echo -echoe
什么时候不工作
speed 57600 baud; line = 0;
eof = ^A; min = 0; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
尝试stty /dev/ttyACM0
理智,并重置为原来的
更新2
大声笑,这是一个黑客解决方案,我能够始终获得来自串口的响应,如果在使用pyserial创建串口对象之前cat设备文件,然后在创建对象后终止cat进程。
有人可以解释为什么,经过这么长时间,这样就可以了吗?