42 lines
1.1 KiB
Python
42 lines
1.1 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)
|
|
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") |