zhagang.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from utils.tcp_data import *
  2. from models.data_sender import Sender
  3. import time, threading
  4. class car_plate:
  5. def __init__(self, sender: Sender):
  6. self.sender = sender
  7. self.server_car = Tcp_server('192.168.12.211', 5200, encoding='gbk')
  8. self.server_car.set_convertor(self.car_solve)
  9. self.server_plate = Tcp_server('192.168.12.211', 5201, encoding='')
  10. self.server_plate.set_convertor(self.plate_solve)
  11. self.c2 = Statepoint(0)
  12. self.c2.set_excite_action(lambda: self.server_plate.send_to_all_clients(b'\x02'))
  13. self.c3 = Statepoint(0)
  14. self.c2.set_excite_action(lambda: self.server_plate.send_to_all_clients(b'\x03'))
  15. self.plates = {2:'', 3:''}
  16. self.server_plate.start()
  17. self.server_car.start()
  18. self.thread = threading.Thread(target=self.send_plate)
  19. self.thread.start()
  20. def car_solve(self, data):
  21. data = data.split('C')
  22. data.reverse()
  23. c2flag = False
  24. c3flag = False
  25. for i in data:
  26. if i == '':
  27. continue
  28. tmp = i.split('|')
  29. if not c2flag and tmp[0] == '2':
  30. c2flag = True
  31. self.c2.inject(int(tmp[1]))
  32. elif not c3flag and tmp[0] == '3':
  33. c3flag = True
  34. self.c3.inject(int(tmp[1]))
  35. if c2flag and c3flag:
  36. break
  37. def plate_solve(self, data):
  38. carNo = data[0]
  39. length = data[2]
  40. plate = data[3:3+length].decode('gbk')
  41. self.plates[carNo] = plate
  42. def send_plate(self):
  43. while True:
  44. self.sender.plate_zhagang('2', self.plates[2])
  45. self.sender.plate_zhagang('2', self.plates[3])
  46. time.sleep(30)