如何使用Python发送十六进制

问题描述 投票:0回答:2

我想从我的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")
python linux hex raspberry-pi
2个回答
2
投票

十六进制只是一种以更简洁的方式显示二进制信息的方式。每组4位由0F范围内的字母数字表示。因此,如果您想用十六进制表示以下二进制101100011111,则为B1F。有关更多信息,请参见this page on code project.

Python 3

在Python中,3个字节的对象不同于字符串。首先要做的是将十六进制转换为字节对象,然后可以将其写入串行端口。

import serial
port = "/dev/ttyAMAO"
usart = serial.Serial (port,4800)
message_bytes = bytes.fromhex("0111050200013F0804")
usart.write(message_bytes)

Python 2

在Python 2中,字符串和字节是同一回事。但是,您仍然需要将十六进制文本转换为其等效字节。可以使用字符串上的decode("hex")来完成。

import serial
port = "/dev/ttyAMAO"
usart = serial.Serial (port,4800)
message_bytes = "0111050200013F0804".decode("hex")
usart.write(message_bytes)

0
投票

Python 3

message_bytes = bytes.fromhex(“ 818283848586878889”)#但这不起作用->;-(

© www.soinside.com 2019 - 2024. All rights reserved.