DeviceHandler.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. import time
  2. from mcu.SerialIns import SerialIns
  3. class DeviceHandler:
  4. def __init__(self, windows=None):
  5. super().__init__()
  6. self.windows = windows
  7. self.serial_ins = None
  8. self.port_name = ""
  9. self.connect_state = False
  10. self.is_running = False
  11. def to_connect_com(self, port_name, is_test=False):
  12. self.close_connect()
  13. time.sleep(0.5)
  14. try:
  15. # 原值为9600
  16. self.serial_ins = SerialIns(port_name=port_name, baud=115200)
  17. # self.serial_ins = SerialIns(port_name=port_name, baud=9600)
  18. if self.serial_ins.serial_handle:
  19. self.sign_data.emit(
  20. {
  21. "_type": "show_info",
  22. "plugins_mode": "remote_control",
  23. "data": "遥控设备 打开串口成功",
  24. }
  25. )
  26. self.connect_state = True
  27. self.sign_data.emit(
  28. {
  29. "_type": "remote_control_connect",
  30. "plugins_mode": "remote_control",
  31. "data": port_name,
  32. }
  33. )
  34. self.port_name = port_name
  35. if is_test is False:
  36. self.start()
  37. return True
  38. else:
  39. self.sign_data.emit(
  40. {
  41. "_type": "show_info",
  42. "plugins_mode": "remote_control",
  43. "data": "遥控设备 打开串口失败",
  44. }
  45. )
  46. self.serial_ins = None
  47. self.connect_state = False
  48. except:
  49. self.sign_data.emit(
  50. {
  51. "_type": "show_info",
  52. "plugins_mode": "remote_control",
  53. "data": "遥控设备 打开串口失败",
  54. }
  55. )
  56. self.serial_ins = None
  57. self.connect_state = False
  58. return False
  59. def close_connect(self):
  60. self.port_name = ""
  61. if self.connect_state:
  62. self.serial_ins.close_serial_port()
  63. self.connect_state = False
  64. def __del__(self):
  65. self.close_connect()
  66. def analysis_received_data(self):
  67. if not self.connect_state:
  68. return
  69. receive_data = self.serial_ins.read_cmd(out_time=1, check=None)
  70. if receive_data is False:
  71. self.connect_state = False
  72. return False
  73. if not receive_data:
  74. return
  75. else:
  76. print(
  77. "read receive_data {}".format(
  78. self.serial_ins.change_hex_to_int(receive_data)
  79. )
  80. )
  81. pass
  82. # 数据 结构 command,按命令解析
  83. if receive_data[0] == 1:
  84. # 扫码数据
  85. bar_code = receive_data[1:].decode()
  86. bar_code = bar_code.replace("\r", "")
  87. bar_code = bar_code.replace("\n", "")
  88. self.sign_data.emit(
  89. {"_type": 0, "plugins_mode": "remote_control", "data": bar_code}
  90. )
  91. return
  92. if receive_data[0] == 9:
  93. button_value = receive_data[1]
  94. data = {"button_value": button_value}
  95. self.sign_data.emit(
  96. {"_type": 9, "plugins_mode": "remote_control", "data": data}
  97. )
  98. return
  99. pass
  100. def run(self):
  101. # self.show_info.emit("未连接")
  102. # self.data_command_sign.emit(data)
  103. self.is_running = True
  104. while 1:
  105. time.sleep(0.05)
  106. if not self.connect_state:
  107. self.sign_data.emit(
  108. {
  109. "_type": "show_info",
  110. "plugins_mode": "remote_control",
  111. "data": "遥控设备 未连接",
  112. }
  113. )
  114. break
  115. self.analysis_received_data()
  116. self.is_running = False
  117. if not self.connect_state:
  118. self.sign_data.emit(
  119. {
  120. "_type": "show_info",
  121. "plugins_mode": "remote_control",
  122. "data": "遥控设备 未连接",
  123. }
  124. )