Python串行读取不起作用

时间:2016-01-06 01:28:22

标签: python linux serial-port raspberry-pi

我正在尝试使用python的RS232控制投影机。此链接包含有关端口设置和预期响应的所需信息。 http://www.audiogeneral.com/Optoma/w501_rs232.pdf

将它夏天化 波特= 9600, 数据位= 8, 没有平价, 1站点, 没有流量控制。

当发送命令“〜00124 1 \ r”时,投影机应响应o n其中n是电源状态。

当发送命令“~0000 1 \ r”时,投影机应该打开电源

从Putty我能够发送开机命令和其他命令,并看到投影机完成了它应该做的事情。我也可以发送read命令并将相应的okn响应返回到putty。

从python我可以发送开机命令并看到投影机开机。但是当我发送电源状态命令时,我从未看到任何字符进入读缓冲区。

这是我试图调试它的测试脚本的代码。

import serial
ser = serial.Serial("/dev/ttyUSB0")

print ser.baudrate
print ser.bytesize
print ser.parity
print ser.stopbits
print ser.xonxoff
print ser.rtscts
print ser.dsrdtr 
print ser.name

print "Power State"
ser.write("~00124 1")

while ser.inWaiting() > 0:
  response = ser.read(3)
  print response


output:
9600
8
N
1
False
False
False
/dev/ttyUSB0
True
Power State

我希望在电源状态行之后有一个okn但它没有出现

1 个答案:

答案 0 :(得分:0)

Putty模拟一个串行终端,如Linux / Unix中的minicom或Windows上的HyperTerminal。 尝试在字符串末尾添加\ n \ r \ n作为真正的串行终端。

我建议你尝试每个字节读取数据字节,而不是每次读取3个字节。如果你使用readline方法会更好。