我正在尝试使用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但它没有出现
答案 0 :(得分:0)
Putty模拟一个串行终端,如Linux / Unix中的minicom或Windows上的HyperTerminal。 尝试在字符串末尾添加\ n \ r \ n作为真正的串行终端。
我建议你尝试每个字节读取数据字节,而不是每次读取3个字节。如果你使用readline方法会更好。