Added queue put and get with print

This commit is contained in:
2026-07-29 16:10:33 +01:00
parent 7a01c06740
commit 7052b78cce

42
main.py
View File

@@ -1,17 +1,22 @@
from queue import Queue from queue import Empty, Queue
from time import sleep from time import sleep
from typing import final
import pyudev import pyudev
from gpiozero import Device
from gpiozero.pins.mock import MockFactory
from gpiozero import LED from gpiozero import LED
from threading import Thread, Event from threading import Thread, Event
from dataclasses import dataclass
red = LED(17) red = LED(17)
yellow = LED(27) yellow = LED(27)
blue = LED(22) blue = LED(22)
@dataclass
class DiskEvent:
event: str
node: str
serial: str
def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None: def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None:
context = pyudev.Context() context = pyudev.Context()
@@ -22,16 +27,22 @@ def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None:
for device in iter(monitor.poll, None): for device in iter(monitor.poll, None):
if device.action == "add" and device.device_type == "disk": if device.action == "add" and device.device_type == "disk":
print("\nDisk connected") eventQueue.put(
print(f"Device: {device.device_node}") DiskEvent(
print(f"Name: {device.sys_name}") event="connected",
print(f"Model: {device.get('ID_MODEL', 'Unknown')}") node=f"{device.device_node}",
print(f"Serial: {device.get('ID_SERIAL_SHORT', 'Unknown')}") serial=f"{device.get('ID_SERIAL_SHORT', 'Unknown')}",
print(f"Bus: {device.get('ID_BUS', 'Unknown')}") )
)
elif device.action == "remove" and device.device_type == "disk": elif device.action == "remove" and device.device_type == "disk":
print("\nDisk disconnected") eventQueue.put(
print(f"Name: {device.sys_name}") DiskEvent(
event="disconnected",
node=f"{device.device_node}",
serial=f"{device.get('ID_SERIAL_SHORT', 'Unknown')}",
)
)
if stopEvent.is_set(): if stopEvent.is_set():
return return
@@ -40,7 +51,7 @@ def diskPollWorker(stopEvent: Event, eventQueue: Queue) -> None:
def main() -> None: def main() -> None:
try: try:
stopEvent = Event() stopEvent = Event()
diskEventQueue = Queue() diskEventQueue: Queue[DiskEvent] = Queue()
diskPollThread = Thread( diskPollThread = Thread(
target=diskPollWorker, target=diskPollWorker,
@@ -51,7 +62,10 @@ def main() -> None:
diskPollThread.start() diskPollThread.start()
while True: try:
event = diskEventQueue.get_nowait()
print(event)
except Empty:
sleep(1) sleep(1)
finally: finally: