from helper.SerialPort import * from collections import Counter import time import threading import binascii # 移植来自RMS3.0的超高频SimpleRFIDReader方法中的超高频(UHF)部分 class OutSideUHFReader: def __init__(self, com="/dev/ttyUSB0"): self.seria = None self.rfidData='' self.taskKillFlag=True self.noCount=0 self.bqz='' try: self.seria = SerialPort(com, 115200,0.1) print('小型FID初始化成功') except Exception as ex: print('小型FID初始化失败:' + str(ex)) # 读取 def read(self): self.seria.Write(bytes.fromhex("A0 04 FF 89 01 D3")) while True: data = self.seria.Read() if data == None: continue else: break val = str(binascii.b2a_hex(data).decode()) # print('valvalval:',val) if len(val) == 66: # 不同的超高频的标签的UID位置可能不一样!(注意) bq = val[14:38] self.bqz=bq self.noCount=0 else: self.noCount+=1 if(self.noCount>=3): self.bqz = "" # print(bqz) return self.bqz def getData(self): return self.rfidData def readDataThread(self): while not(self.taskKillFlag): try: dataStr=self.read() if(dataStr): self.rfidData=dataStr else: self.rfidData='' time.sleep(0.1) except Exception as e: print(str(e)) # 启动服务 def start(self): self.rfidData='' self.taskKillFlag=False if self.seria.ser: p = threading.Thread(target=self.readDataThread) p.start() else: print("打开串口设备失败!") # 停止服务 def stop(self): self.taskKillFlag=True self.rfidData='' rfid_reader = OutSideUHFReader() rfid_reader.start()