34 lines
676 B
Python
34 lines
676 B
Python
|
#!/usr/bin/env python3
|
||
|
import serial
|
||
|
import crcmod
|
||
|
|
||
|
from config import *
|
||
|
|
||
|
calc_crc = crcmod.predefined.mkCrcFun(CRC_TYPE)
|
||
|
|
||
|
def parse_line(line):
|
||
|
if line[-2:] != "\r\n":
|
||
|
return {key : None for key in FORMAT}
|
||
|
line = line[:-2]
|
||
|
|
||
|
crc_str = line[-2:]
|
||
|
payload = line[0:-2]
|
||
|
crc = (ord(crc_str[0]) << 8) | ord(crc_str[1])
|
||
|
if crc != calc_crc(payload.encode('ascii')):
|
||
|
return {key : None for key in FORMAT}
|
||
|
|
||
|
parts = payload.split(';')
|
||
|
parts = [p.strip() for p in parts]
|
||
|
parts = [x if x != '#' else None for x in parts]
|
||
|
data = zip(FORMAT, parts)
|
||
|
|
||
|
return dict(data)
|
||
|
|
||
|
|
||
|
def main():
|
||
|
pass
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|