无法使用pyserial读取虚拟盒guest ubuntu和xubuntu机器中的串口缓冲区

时间:2014-02-27 12:08:20

标签: python ubuntu serial-port virtual-machine pyserial

我正在尝试使用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进程。

有人可以解释为什么,经过这么长时间,这样就可以了吗?

0 个答案:

没有答案