Files
board-mate/rpi/hardware/rfid/reader.py
2025-12-30 15:34:31 +01:00

43 lines
1.2 KiB
Python

#!/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)
formatted_res = f'{{"uid": {data}}}'
self._notify(formatted_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")