如何在python / pyserial中组合以下三个值来获取一个值

时间:2017-07-21 11:25:00

标签: python pyserial

我试图将使用pyserial通过串口获得的三个值组合在一起。这些值对应于从fpga板传输的24位数据的3个部分,我想在python脚本中获取24位数据。什么样的转换和组合过程可以让我回复这个24位数据?我使用以下简单的while循环读取数据...

import serial

port = serial.Serial('/dev/ttyUSB0', 115200)
file = open("my_file.txt","a")
while True:   

   message = ord(port.read())
   print(message)          
   file.write(str(message) + "\n")

file.close()

提前致谢:)

1 个答案:

答案 0 :(得分:0)

您可以使用struct模块(内置Python)将这3个字节打包成一个:

import struct

#Your code ...

while True:
  message = port.read(3) #Read 3 bytes at once
  combined = struct.unpack(">I", b'\x00' + message)[0]

>I表示您解码以big-endian(I)保存的32位无符号整数(>)。因为struct.unpack()不支持24位数字,所以我在24位数字的开头添加了1个零字节,这有效地创建了32位数字。