Files

37 lines
959 B
Python
Raw Permalink Normal View History

import struct
class AFrame:
def __init__(self, data: bytes):
self.valid = False
self.data_id = 0
self.data_len = 0
self.payload = b""
# A帧最小长度: 4+4+4+4+4+4 + 8 + 2 = 34
if len(data) < 34:
return
try:
# 大端解包
magic, dlen, dir_, data_id, ptype, sat = struct.unpack('>IIIIII', data[:24])
payload = data[24:-2]
tail = data[-2:]
if magic != 0xEB90EB90 or tail != 0x4C3A.to_bytes(2, 'big'):
return
self.valid = True
self.data_id = data_id
self.data_len = dlen
self.payload = payload
except:
pass
def get_doubles(self):
doubles = []
buf = self.payload
while len(buf) >= 8:
d = struct.unpack('>d', buf[:8])[0]
doubles.append(d)
buf = buf[8:]
return doubles