2016-05-09 14 views
0

Ich mache eine Java-GUI-Anwendung (javafx), die ein Python-Skript (python2.7) aufruft, das verbundene Geräte erkennt. Der Grund dafür ist, dass ich meine Verbindungen mit mehreren Geräten automatisieren kann.Python-Skript zum Erkennen von USBs in Java GUI

In meinem Python-Skript verwende ich Pyusb. Um ein Gerät zu erkennen, muss ich jedoch inf_wizard.exe von libusb-win32 verwenden, um mit dem Gerät zu kommunizieren. Das ist für meine eigene Entwicklung und das Debuggen in Ordnung, aber was passiert, wenn ich diese App bereitstellen und andere Benutzer verwenden möchte?

Wäre diese App auf einem anderen Computer in der Lage, ein Gerät zu erkennen?

Dank

Bitte lassen Sie mich wissen, ob es ein besserer Weg, dies zu tun.

+0

haha ​​du scheinst eine ganze Reihe von Sprachen zu haben. Ihr Design wirkt sehr fragmentiert. Was sind diese Geräte? USB-Laufwerke? –

+0

Die Geräte sind Evaluierungskarten. haha, ya, das erste Mal, dass ich dies tue, glaube ich, dass meine Methoden der beste Weg sind (abgesehen von QT/C++ für die GUI). Bitte lassen Sie mich wissen, wenn Sie andere Vorschläge haben! – user3773673

Antwort

0

Nein, in den meisten (Windows) Szenarien wird dies nicht funktionieren. Das Problem ist, dass libusb unter Windows ein spezielles Backend verwendet (libusb0.sys, libusbK.sys oder winusb.sys). Sie müssen eines dieser Backends (libusb-win32 is libusb0.sys) auf jedem Rechner installieren, auf dem Ihre Software laufen soll. Unter Linux sollte das gut funktionieren.

Im Wesentlichen müssen Sie die Dateien, die Sie mit inf_wizard.exe erzeugen, mit Ihrer Software versenden und das inf installieren (benötigt erhöhte Rechte), bevor Sie das Gerät mit Ihrer Software benutzen können.

+0

Danke für die Antwort! Gibt es alternative Methoden, die kein spezielles Backend benötigen (usb4java etc.)? – user3773673

+0

Nein, das weiß ich nicht. Das Problem ist, dass Sie leider einen Kernelland-Treiber benötigen, um mit dem Benutzerland zu kommunizieren, und Windows afaik bietet keine Möglichkeit, Kernel-Module still zu schalten. In Zukunft wird dies viel einfacher werden, da Windows immer mehr sein eigenes Backend WinUSB für Geräte verwendet. Ab Windows 10 wird es von vielen Geräten als Standard verwendet. Daher müssen Sie die Kernel-Module nicht wechseln und können die Benutzerland-Software einfach umschalten, wenn sie WinUSB unterstützt. Für Fälle mit selbstgebauter Hardware, wie es bei Ihrem Gerät der Fall zu sein scheint, wird dies immer noch keine Lösung sein. – dryman

+0

Die FAQ von usb4java lehnt es auch ab: http://usb4java.org/faq.html. – dryman