Pyserial - Python创建字节数组

时间:2016-08-19 16:10:54

标签: python pyserial

我有以下数据

a1 = 0x5A - hex

a2 = 0x01 - hex

a3 = 12 - 十进制

a4 = 28 - 十进制

a5 =(a1到a4)的总和

我应该能够在字节数组中发送所有这些信息,并一次性使用ser.write命令发送。

目前我手动将a3和a4转换为十六进制,我使用的是这样的ser.write('\ x5A \ x01 \ x ... \ x ... \ x ...)

我想要一种方法,我可以将所有变量打包到单个字节数组中并说ser.write(bytearray)

ser ---是我的serial.Serial('COM1')

与ser.read相同 - 我得到的信息是字节数组 - 如何解码为十进制和十六进制

寻找使用binascii函数转换为字节数组和从字节数组转换回来

1 个答案:

答案 0 :(得分:2)

您想要一串十六进制值吗?不确定。

a1 = 0x5A # hex
a2 = 0x01 # hex
a3 = 12 # decimal
a4 = 28 # decimal
a5 = sum((a1, a2, a3, a4))

int_array = [a1, a2, a3, a4, a5]
print(int_array)

hex_array = "".join(map(hex, int_array))
print(hex_array)

你会得到:

[90, 1, 12, 28, 131]
0x5a0x10xc0x1c0x83

使用array类:

import array

byte_array = array.array('B', int_array)
print(byte_array)
print(byte_array.tostring())

你会得到:

array('B', [90, 1, 12, 28, 131])
b'Z\x01\x0c\x1c\x83'