我想从我的Raspberry Pi发送十六进制代码到连接的伺服驱动器。我有来自Link Sprite的RS 485 Shield用于通信。
Shield之所以有效,是因为我在Python shell中得到了答案。我的问题是如何将0111050200013F0804
发送到我的伺服驱动器?
到目前为止我的代码是
import serial
port = "/dev/ttyAMAO"
usart = serial.Serial (port,4800)
usart.flushInput()
usart.write("0111050200013F0804")
答案 0 :(得分:1)
Hex只是一种以更简洁的方式显示二进制信息的方法。每组4比特由从0
到F
的字母数字数字表示。因此,如果您想以十六进制表示以下二进制101100011111
,则它将为B1F
。有关详情,请参阅this page on code project.
在Python中,3字节对象与字符串不同。首先需要做的是将十六进制转换为一个字节对象,然后可以在串行端口上写入。
import serial
port = "/dev/ttyAMAO"
usart = serial.Serial (port,4800)
message_bytes = bytes.fromhex("0111050200013F0804")
usart.write(message_bytes)
在Python 2中,字符串和字节是相同的。但是,您仍然需要将十六进制文本转换为其等效字节。这可以使用字符串上的decode("hex")
来完成。
import serial
port = "/dev/ttyAMAO"
usart = serial.Serial (port,4800)
message_bytes = "0111050200013F0804".decode("hex")
usart.write(message_bytes)