123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #!/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
|