Python 串行读取不工作
Python Serial Read Not Working
我正在尝试使用来自 python 的 RS232 控制投影仪。 link 包含有关端口设置和预期响应的所需信息。 http://www.audiogeneral.com/Optoma/w501_rs232.pdf
对其进行总结
波特率 = 9600,
数据位 = 8,
没有平价,
1个停止位,
没有流量控制。
发送命令“~00124 1\r”时,投影仪应响应正常,其中 n 是电源状态。
发送命令“~0000 1\r”后,投影仪应该开机
我可以从 Putty 发送开机命令和其他命令,并查看投影仪是否按预期运行。我还可以发送读取命令并将适当的 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
我希望在电源状态行后显示正常,但它没有显示
Putty 模拟串行终端,例如 Linux/Unix 中的 minicom 或 Windows 中的 HyperTerminal。
尝试在字符串末尾添加 \n\r 以充当真正的串行终端。
我建议您尝试按字节读取数据字节,而不是一次读取 3 个字节。如果你使用 readline 方法更好。
我正在尝试使用来自 python 的 RS232 控制投影仪。 link 包含有关端口设置和预期响应的所需信息。 http://www.audiogeneral.com/Optoma/w501_rs232.pdf
对其进行总结 波特率 = 9600, 数据位 = 8, 没有平价, 1个停止位, 没有流量控制。
发送命令“~00124 1\r”时,投影仪应响应正常,其中 n 是电源状态。
发送命令“~0000 1\r”后,投影仪应该开机
我可以从 Putty 发送开机命令和其他命令,并查看投影仪是否按预期运行。我还可以发送读取命令并将适当的 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
我希望在电源状态行后显示正常,但它没有显示
Putty 模拟串行终端,例如 Linux/Unix 中的 minicom 或 Windows 中的 HyperTerminal。 尝试在字符串末尾添加 \n\r 以充当真正的串行终端。
我建议您尝试按字节读取数据字节,而不是一次读取 3 个字节。如果你使用 readline 方法更好。