#!/usr/bin/env python # encoding: utf-8 """ @time: 2021/5/31 11:37 @desc: sct003 和 moxae1210 的解析器 """ from converter import Converter from log import OutPutLog class A1eConverter(Converter): def __init__(self): self._log = OutPutLog() def convert(self, config, data, master): if data: format_data_dict = {} # 列表数据转换字典数字 try: for index in config: type = index['data_type'] address = index['address'] data_addr = int(address[1:])*2 db_number = address[:1] if db_number in data: if data[db_number] != None : #防止设备断线返回为空导致的异常 if data_addr < len(data[db_number]): if type == "UINT16": return_data = master.byteTransform.TransUInt16(data[db_number], data_addr) elif type == "INT32": return_data = master.byteTransform.TransInt32(data[db_number], data_addr) name = 'c' + str(index['serial_number']) if index['divisor'] is not None: return_data = return_data / index['divisor'] if isinstance(return_data, float): return_data = round(return_data, 2) format_data_dict[name] = return_data except Exception as e: print("A1EConverter[ERROR]:"+str(e)) return "error" return format_data_dict