如何使用Python发送十六进制
我想从我的Raspberry Pi发送一个十六进制代码到连接的伺服驱动器。我有一个RS 485屏蔽,用于通信。 这个屏蔽之所以有效,是因为我在pythonshell中得到了答案。我的问题是如何将如何使用Python发送十六进制,python,linux,hex,raspberry-pi,Python,Linux,Hex,Raspberry Pi,我想从我的Raspberry Pi发送一个十六进制代码到连接的伺服驱动器。我有一个RS 485屏蔽,用于通信。 这个屏蔽之所以有效,是因为我在pythonshell中得到了答案。我的问题是如何将01110500013F0804发送到伺服驱动器 到目前为止,我掌握的代码是 import serial port = "/dev/ttyAMAO" usart = serial.Serial (port,4800) usart.flushInput() usart.write("011105020001
01110500013F0804
发送到伺服驱动器
到目前为止,我掌握的代码是
import serial
port = "/dev/ttyAMAO"
usart = serial.Serial (port,4800)
usart.flushInput()
usart.write("0111050200013F0804")
十六进制只是以更简洁的方式显示二进制信息的一种方式。每组4位由字母数字数字表示,范围从
0
到F
。因此,如果您想用十六进制表示以下二进制文件101100011111
,它将是B1F
。欲了解更多信息,请参阅
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
在Python2中,字符串和字节是相同的。但是,您仍然需要将十六进制文本转换为其等效字节。这可以使用字符串上的解码(“十六进制”)
来完成
import serial
port = "/dev/ttyAMAO"
usart = serial.Serial (port,4800)
message_bytes = "0111050200013F0804".decode("hex")
usart.write(message_bytes)
十六进制只是以更简洁的方式显示二进制信息的一种方式。每组4位由字母数字数字表示,范围从
0
到F
。因此,如果您想用十六进制表示以下二进制文件101100011111
,它将是B1F
。欲了解更多信息,请参阅
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
在Python2中,字符串和字节是相同的。但是,您仍然需要将十六进制文本转换为其等效字节。这可以使用字符串上的解码(“十六进制”)
来完成
import serial
port = "/dev/ttyAMAO"
usart = serial.Serial (port,4800)
message_bytes = "0111050200013F0804".decode("hex")
usart.write(message_bytes)
你可能想问我的代码:导入序列号。。。port=“/dev/ttyamo”。。。usart=serial.serial(端口,4800)。。。usart.flushInput()。。。usart.write(“01110500013F0804”)。。。是下一行我不能在这里做。你用的伺服驱动器是什么?您能否编辑您的问题,以包括伺服驱动器的名称,最好是一个指向该驱动器文档的链接?您需要发送文本还是十六进制数字?我有一个伺服表Linmot a c1200。我想发送十六进制数字。有了这些数字,伺服机构知道他必须做什么。在这种情况下,它是归位。明天我会把手册寄给你。你可能想问我的代码:导入序列号。。。port=“/dev/ttyamo”。。。usart=serial.serial(端口,4800)。。。usart.flushInput()。。。usart.write(“01110500013F0804”)。。。是下一行我不能在这里做。你用的伺服驱动器是什么?您能否编辑您的问题,以包括伺服驱动器的名称,最好是一个指向该驱动器文档的链接?您需要发送文本还是十六进制数字?我有一个伺服表Linmot a c1200。我想发送十六进制数字。有了这些数字,伺服机构知道他必须做什么。在这种情况下,它是归位。明天我会把手册寄给你。