from utils.tcp_data import * from models.data_sender import Sender import time, threading class car_plate: def __init__(self, sender: Sender): self.sender = sender self.server_car = Tcp_server('192.168.12.211', 5200, encoding='gbk') self.server_car.set_convertor(self.car_solve) self.server_plate = Tcp_server('192.168.12.211', 5201, encoding='') self.server_plate.set_convertor(self.plate_solve) self.c2 = Statepoint(0) self.c2.set_excite_action(lambda: self.server_plate.send_to_all_clients(b'\x02')) self.c3 = Statepoint(0) self.c2.set_excite_action(lambda: self.server_plate.send_to_all_clients(b'\x03')) self.plates = {2:'', 3:''} self.server_plate.start() self.server_car.start() self.thread = threading.Thread(target=self.send_plate) self.thread.start() def car_solve(self, data): data = data.split('C') data.reverse() c2flag = False c3flag = False for i in data: if i == '': continue tmp = i.split('|') if not c2flag and tmp[0] == '2': c2flag = True self.c2.inject(int(tmp[1])) elif not c3flag and tmp[0] == '3': c3flag = True self.c3.inject(int(tmp[1])) if c2flag and c3flag: break def plate_solve(self, data): carNo = data[0] length = data[2] plate = data[3:3+length].decode('gbk') self.plates[carNo] = plate def send_plate(self): while True: self.sender.plate_zhagang('2', self.plates[2]) self.sender.plate_zhagang('2', self.plates[3]) time.sleep(30)