Eric-Canas / USBMonitor

USBMonitor is an easy-to-use cross-platform library for USB device monitoring that simplifies tracking of connections, disconnections, and examination of connected device attributes on both Windows and Linux, freeing the user from platform-specific details or incompatibilities.
MIT License
33 stars 7 forks source link

Support for the `tty` subsystem notifications #3

Open lukipuki opened 9 months ago

lukipuki commented 9 months ago

I'm using USB devices that contain a UART bridge, so they communicate over a serial port bridged via USB.

I've used pyudev previously but I want to make my app run on Windows too. The problem is that the notification from USBMonitor comes too early, before the serial port is initialized. In pyudev, you can specify subsystem=tty to receive notifications when the serial port becomes available.

Benchmarking USBMonitor, which is using subsystem=usb, against pyudev using subsystem=tty gives a fairly long delay (up to 200ms) between those two: 2024-01-23 10:47:39.930515 USBMonitor nofitifaction, subsystem=usb 2024-01-23 10:47:39.999694 pyudev notification, subsystem=tty

In order to integrate with USBMonitor I have to put in a hacky sleep for the serial port to be available. Or I can modify the source code in the following way: image

Would you be willing to add an option to listen to the tty subsystem notifications?

When I tested USBMonitor on Windows, it looked like this was not needed, as the COM port was part of the name of the device returned by USBMonitor, so I assume it was ready to use. I haven't tested it though, so maybe there needs to be some change in the Windows part too.