2017-04-21 2 views
-1

Ich denke ruby-dbus könnte die richtige Lösung sein, aber ich kann anscheinend keine Beispiele finden, wie man in Echtzeit erkennt, wann immer ein Speichergerät mit dem Linux-Rechner verbunden ist. Hat jemand ein solches Beispiel?Wie erreiche ich Echtzeit-USB-Speichererkennung mit Ruby unter Linux?

+0

Bitte lesen Sie "[fragen]". Sie bitten uns, Off-Site-Ressourcen zu empfehlen, die nicht zum Thema gehören. –

+0

Ich bin nicht, ich frage, wie Echtzeit-USB-Speichererkennung mit Ruby unter Linux zu erreichen. Ein bisschen Beispielcode wäre großartig. –

Antwort

0

Es scheint zahlreiche verschiedene Ansätze zu geben, die Sie ergreifen könnten.
Here's a Ruby implementation I found, die in libusb mit Ruby FFI verbindet.

Was ist gut daran ist, dass Libusb Hotplug-Benachrichtigungen unterstützt, so dass dies etwas sein könnte, das tut, was Sie brauchen:
http://libusb.sourceforge.net/api-1.0/hotplug.html

Vom libusb Ruby docs:

Geräte Hotplug-Unterstützung

Unterstützung für Hotplugging des Geräts kann verwendet werden, wenn LIBUSB.has_capability?(:CAP_HAS_HOTPLUG) Wahr zurückgibt. Dies erfordert libusb-1.0.16 oder neuer unter Linux oder MacOS. Die Windows-Unterstützung ist noch nicht abgeschlossen.

Ein Hotplug-Ereignishandler kann mit {LIBUSB::Context#on_hotplug_event} registriert werden. Sie müssen dann {LIBUSB::Context#handle_events} anrufen, um irgendwelche Ereignisse zu erhalten. Dies kann als Blockieren von Aufrufen erfolgen (möglicherweise in seinem eigenen Thread) oder durch Verwenden von {LIBUSB::Context#pollfds}, um alle zu behandelnden Ereignisse zu erkennen.

+0

Vielen Dank dafür, ich habe nicht realisiert, libusb hat hotplug Unterstützung, das ist perfekt! –

Verwandte Themen