我想从我的Raspberry Pi发送十六进制代码到连接的伺服驱动器。我有Link Sprite提供的RS 485屏蔽用于通信。Shield之所以有效,是因为我在Python shell中得到了答案。我的问题是如何将0111050200013F0804
发送到我的伺服驱动器?
到目前为止,我的代码是
import serial
port = "/dev/ttyAMAO"
usart = serial.Serial (port,4800)
usart.flushInput()
usart.write("0111050200013F0804")
十六进制只是一种以更简洁的方式显示二进制信息的方式。每组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)
Python 3
message_bytes = bytes.fromhex(“ 818283848586878889”)#但这不起作用->;-(