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")
我不确定地址是什么...但希望这能给你一个想法
这是我第一次 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")
我不确定地址是什么...但希望这能给你一个想法