我正在向设备发送一个字节(“\x2b”),并将接收1个echo字节加上3个字节的数据(“\x2b\x??\x??\x??)。我使用.replace(“2b”,“”,4)来去除回显字节。我需要将接收到的3个十六进制字节更改为int(16),并将它们命名为3个不同的变量,以便在计算中一次分别调用一个。这是我到目前为止的情况。在
import serial
import os
ser = serial.Serial(port="COM17", baudrate=9600)
ser.open()
ser.write("\x2b")
print int(ser.readline(4).encode("hex").replace("2b", "", 4), 16)
ser.close()
os.system("pause")
没有“自然”转换来将3字节流转换为3(?)
int16
(又名short
)数字。在所以你必须更加具体:
int8
?当然,将得到的数字视为int16
(因为它们将适合)int16
),你是用大的还是小的?在在任何情况下,
struct
包可以为您进行转换:使用
struct
模块从字节字符串中检索任意二进制数据:附带说明:避免在程序中使用
os.system("pause")
。这是一些人的一个可怕的习惯,当程序运行完毕时,Windows-DOS提示符会保持打开状态,但这是(1)对于一个在macosx和Linux上运行的程序来说,它是(1)只在Windows上运行,(2)为一个普通的操作创建一个完整的其他进程。在您可以在Python中添加一个简单的
input
调用,要求用户改为按<enter>
:(最后一行):
^{pr2}$相关问题 更多 >
编程相关推荐