我正试图用串口控制我的旧三星DLP SP-A600B (杰克)。为了做到这一点,我已经恢复了我的Raspberry Pi 3,并插入了我在网络上找到的USB到Jack电缆(UART)。
我制作了一个小Python文件,但我不明白我正在接收的输出。这是我的密码:
import time
import serial
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.SEVENBITS
)
ON = b"\x08,\x22,\x00,\x00,\x00,\x00,\xD6"
# other hard-coded commands
ser.write(ON)
time.sleep(1)
out = ser.read(3)
# 0x03 0x0C 0x7F doesn't match the spec!
print out
ser.close()根据到手册上
5-2 RS-232C命令表 通信格式(符合RS232C标准)
串行通信协议
1. Success0x03 0x0C 0xF1
1. Fail0x03 0x0C 0xFF
我使用这个网站来计算第七个字节(D6)的2的补码(我更多的是NodeJS / Android )。不幸的是,我只收到
0x03 0x0C 0x7F为了这个命令。如果我试图设置像serial.PARITY_ODD或serial.EIGHTBITS这样的奇怪值,就会收到失败的数据包。
0x03 0x0C 0xFF而我没有成功地收到一个成功的包裹。任何帮助都将不胜感激!
发布于 2017-11-04 21:06:37
正如我们最终在注释中指出的那样,问题是命令字符串中有多余的逗号,数据需要为8位。
因此,具体而言,请使用:
bytesize=serial.EIGHTBITS
...
...
ON = b"\x08\x22\x00\x00\x00\x00\xD6" https://stackoverflow.com/questions/47106515
复制相似问题