a1e_converter.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3. """
  4. @time: 2021/5/31 11:37
  5. @desc: sct003 和 moxae1210 的解析器
  6. """
  7. from converter import Converter
  8. from log import OutPutLog
  9. class A1eConverter(Converter):
  10. def __init__(self):
  11. self._log = OutPutLog()
  12. def convert(self, config, data, master):
  13. if data:
  14. format_data_dict = {} # 列表数据转换字典数字
  15. try:
  16. for index in config:
  17. type = index['data_type']
  18. address = index['address']
  19. data_addr = int(address[1:])*2
  20. db_number = address[:1]
  21. if db_number in data:
  22. if data[db_number] != None : #防止设备断线返回为空导致的异常
  23. if data_addr < len(data[db_number]):
  24. if type == "UINT16":
  25. return_data = master.byteTransform.TransUInt16(data[db_number], data_addr)
  26. elif type == "INT32":
  27. return_data = master.byteTransform.TransInt32(data[db_number], data_addr)
  28. name = 'c' + str(index['serial_number'])
  29. if index['divisor'] is not None:
  30. return_data = return_data / index['divisor']
  31. if isinstance(return_data, float):
  32. return_data = round(return_data, 2)
  33. format_data_dict[name] = return_data
  34. except Exception as e:
  35. print("A1EConverter[ERROR]:"+str(e))
  36. return "error"
  37. return format_data_dict