您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

63 行
1.6KB

  1. from typing import List
  2. from MAXDevice import MAXDevice, MAXThermostat, MAXPushButton
  3. from MAXCube import CUL
  4. from MAXPacketHandler import MAXPacketHandler
  5. from MAXPacket import MAXPacketFactory
  6. from time import sleep
  7. import sys
  8. import signal
  9. DEBUG = True
  10. devices: List[MAXDevice] = []
  11. quit_flag = False
  12. cube: CUL = None
  13. handler: MAXPacketHandler = None
  14. def read_devices(file_name):
  15. file = open(file_name, "r")
  16. lines = file.readlines()
  17. file.close()
  18. for line in lines:
  19. if not line.startswith("#") and line.strip() != "\n":
  20. new_dev = MAXDevice.from_string(line)
  21. if new_dev is not None:
  22. devices.append(new_dev)
  23. def write_devices(file_name):
  24. file = open(file_name, "w")
  25. for device in devices:
  26. dev_str = device.serialize().replace("\n", "")
  27. file.write(dev_str)
  28. file.write("\n")
  29. file.close()
  30. def receive_loop():
  31. global quit_flag
  32. while not quit_flag and cube.is_connected():
  33. try:
  34. resp = cube.response()
  35. if resp is not None and resp[0:1] == "Z":
  36. pkt = MAXPacketFactory.create_packet(resp)
  37. handler.handle_msg(pkt)
  38. sleep(0.1)
  39. except KeyboardInterrupt:
  40. quit_flag = True
  41. return
  42. if __name__ == '__main__':
  43. read_devices("devices.conf")
  44. cube = CUL("123456")
  45. cube.connect("COM10")
  46. print(cube.version_string())
  47. handler = MAXPacketHandler(cube, devices)
  48. signal.signal(signal.SIGINT, signal.default_int_handler)
  49. receive_loop()
  50. cube.disconnect()
  51. write_devices("devices.conf")