Raspberry Pi 移动符号通信协议 v1.2

Moving Sign Communication Protocol v1.2 with Raspberry Pi

这是我第一次 post 在这里,如果有些问题可能超出范围,请原谅我,但基本上我正在尝试编写自己的程序来将消息从 Raspberry Pi 推送到通过串行通信的 LED 滚动标志(Pi 上的 USB -> RS232 适配器 -> LED 标志)。

我一般不太熟悉串行通信,但我正在尝试在 Pi 上使用 PySerial 库 (http://pyserial.sourceforge.net/pyserial.html) in the format of Moving Sign Protocol V1.2 (http://www.brgprecision.com/pdffiles/Protocol12.pdf)。

这是我目前的 python 代码,没有错误,但插入的标志没有收到任何数据。

import serial
#default port is /dev/tty/USB0
#portname, baudrate, timeout
port = serial.Serial('/dev/ttyUSB0', 9600)
port.open()    port.write('0x00[=11=]x01\"FF"\"03"[=11=]x02\'A'\'A'\'A'\'2'\'2'\'7F'\'0100'\'1200'\'000'\'1'\"OMFG"[=11=]x03\"0564"[=11=]x04')
port.close()

基本上,我不知道如何解析我试图写入正确串行数据包的消息。我是否像上面那样一次性发送协议和文本消息?或者我必须解析每个字段并像这样单独发送它们:

port.write('01')   # start of head
port.write('46')   # pc address
port.write('46')   # number 1 display

ect...

我应该提一下,我也嗅探了我 PC 上的 USB 串口通信,可以确认这个串口信息是正确的,我只是不知道如何在 RPi 上使用它。任何帮助将不胜感激!

你想使用字节

0x00 == 0 == "\x00" 

这与 "0x00" 不同,后者实际上是 "\x30\x78\x30\x30",它是 4 个字符,而不是您希望实现的单个字节

所以要发送 A 部分

ser.write("\x00"*5) # 5 null bytes

发送 SOH 部分

ser.write("\x01")

我不确定地址是什么...但希望这能给你一个想法