#!/usr/bin/env python3 from hardware.generic.serial_reader import SerialReader class RfidReader(SerialReader): def __init__(self, port : str, baudrate: int): super().__init__(port, baudrate) def __read(self): while self._run_event.is_set(): data = b"" while len(data) < 14 and self._run_event.is_set(): character = self.serial.read(1) if not character: continue data += character if len(data) >= 11: hex_value = data[5:11].decode(errors='ignore') try: res = int(hex_value, 16) self.__notify(str(res)) except ValueError: print("Invalid hex:", hex_value) else: print("Received incomplete data:", data) if __name__ == "__main__": def callback(uid): print("UID:", uid) reader = RfidReader("/dev/serial0", 9600) reader.subscribe(callback) reader.start() try: while True: pass except KeyboardInterrupt: reader.stop() print("ArrĂȘt du lecteur RFID")