Ich benutze Ruby 1.8 und Linux (Ubuntu und SLAX), und ich muss ein Skript in Ruby schreiben, das herausfindet, ob ein bestimmtes USB - Gerät mit dem System verbunden ist und an welchem USB - Port (0,1 , 2, usw.). Es wurde vorher mit Hilfe von HAL (hal-find-by-capability-capability serial) gemacht, aber jetzt kann ich diesen Ansatz nicht verwenden. Ich versuchte,/var/log/messages Datei zu lesen, die versucht, die Nummer des USB-Hafens zu finden, aber es scheint, dass diese Zahl in einigen Systemen nicht geschrieben werden kann. Andere Sache, die ich versuchte, ist zu überprüfen,/dev Ordner und Suche nach ttyUSB # Datei, aber es erscheint nicht auf irgendeinem System, wenn neues Gerät an USB anschließt. Ich würde jede Idee, wie dies zu tun wäre, schätzen.Finden Sie heraus, ob das USB-Gerät angeschlossen ist. Ruby in Linux
1
A
Antwort
3
lsusb ist ein Linux-Befehl zum Anzeigen Ihrer USB-Hubs und Auflisten der Geräte, die mit ihnen verbunden sind. In Ruby glaube ich Sie wäre in der Lage, so etwas zu tun:
ls_results = `lsusb`
sollten Sie in der Lage sein, das zu analysieren, für was auch immer Gerät Sie suchen.
0
Es tut mir leid, dass ich Ihnen kein Rubinmuster liefern konnte. Ich hatte das gleiche Problem in C/C++ (QT).
http://www.known-issues.net/cpp/how-to-detect-if-dev-is-a-usb-device.html
0
Sie haben libusb Ruby-Bindungen, die USB-Geräte steuern lassen: Sie können meine Schnipsel finden Sie hier.
Eigentlich muss ich einen Port finden, mit dem dieses Gerät in Form von "tty #" verbunden ist. lsusb gibt mir sowas wie Bus 007 Gerät 001: ID 1d6b: 0001 Linux Foundation 1.1 Root Hub Bus 006 Gerät 001: ID 1d6b: 0001 Linux Foundation 1.1 Root Hub Bus 005 Gerät 002: ID 045e: 00cb Microsoft Corp. Basic Optical Mouse v2.0 etc, aber wie findet man die entsprechende tty-Datei in/dev? – lugger1
Nun können Sie "dmesg | grep usb" verwenden, um den Speicherort zu erhalten, nachdem das USB-Gerät eingefügt wurde, aber Sie müssten auch diese Informationen analysieren. – wajiw
@wajiw: mmesg zeigt nur die letzten Kernelmeldungen an, so dass es nicht funktioniert, wenn sie das Gerät nicht kürzlich angeschlossen haben. –