Linux USB HID Device?
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Linux USB HID Device?
@Christian: Irgend welche Ergebnisse?
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Linux USB HID Device?
Ich bin nun dem Problem ein Stückchen weiter gekommen. Es liegt daran wie der FPC (und auch Delphi) die Pointer in der Datenstruktur behandelt. Hier die Datenstruktur:
Und so kommt man zum Array mit den Konfigurationen:
- Holen der Adresse in der das Array der Konfiguration steht: @Device^.config
- Zuweisen in eine PUSBConfigDescriptor Variable, damit kann dann mit config[n] zugegriffen werden.
Geht das nicht einfacher?
Code: Alles auswählen
TUSBDevice = record
next : PUSBDevice;
prev : PUSBDevice;
filename : array[0..(LIBUSB_PATH_MAX)-1] of char;
bus : PUSBBus;
descriptor : TUSBDeviceDescriptor;
config : PUSBConfigDescriptor;
dev : pointer;
devnum : byte;
num_children : byte;
children : ^PUSBDevice;
end;
Code: Alles auswählen
config := @Device^.config;
config := PUSBConfigDescriptor((@config[0])^);
- Zuweisen in eine PUSBConfigDescriptor Variable, damit kann dann mit config[n] zugegriffen werden.
Geht das nicht einfacher?
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Linux USB HID Device?
Das ist dann ein Fehler in den Headern, den ich da eh schon vermutete aber noch nicht nachstellen konnte.
Bin leider noch nicht dazu gekommen mich damit zu beschäftigen.
Bin leider noch nicht dazu gekommen mich damit zu beschäftigen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Linux USB HID Device?
Wie kann ich LibUSB unter Linux (Sidux) nutzen? Was muss ich installieren, ausführen usw. ? (bin Linux-Anfänger)
Danke für eure Hilfe im Voraus.
Danke für eure Hilfe im Voraus.
EleLa - Elektronik Lagerverwaltung - www.elela.de
Re: Linux USB HID Device?
Müsste eig. schon da sein.MmVisual hat geschrieben:Wie kann ich LibUSB unter Linux (Sidux) nutzen? Was muss ich installieren, ausführen usw. ? (bin Linux-Anfänger)
Danke für eure Hilfe im Voraus.
Schau mal ob diese Lib gibt: /usr/lib/libusb.so
Für Linux müsste die Version von Uwe Zimmermann laufen:
http://wiki.freepascal.org/Hardware_Access/de#libusb" onclick="window.open(this.href);return false;
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Linux USB HID Device?
Jetzt tappe ich ja mal wieder in alle Linux-Fettnäpfchen....
- /usr/lib/libusb.so gibt es nicht
- Unter /usr/lib gibt es eine Verknüpfung "libusb-0.1.so.4" auf die Date /lib/libusb-0.1.so.4.4.4
- Ich habe dann die Dateien aus dem SF.net und die 3 Befehle anhand der INSTALL Anleitung eingetippt.
- Jetzt habe ich unter /user/local/lib die Datei libusb-1.0.so.0.0.0
- Die Dateien von Hr. Zimmermann lassen sich nicht kompillieren, denn "/usr/bin/ld: cannot find -lusb" + "testlibusb.pas(199,1) Error: Error while linking"
Ich habe mir eine Test-Applikation mit völlig überarbeiteter "libusb.pas" erstellt, die wollte ich nun unter Linux mal testen. Unter Windows mit Lazarus und Delphi geht die Unit bereits.
Im Anhang sende ich das Projekt. Kann das bitte jemand unter Lazarus/Linux öffnen und schauen ob im Baum die USB-Geräte gezeigt werden?
Unter Linux/Lazarus lässt es sich fehlerfrei kompillieren.
Das Problem mit meiner LibUSB unter Lazarus hätte ich gerne behoben. Kann mir bitte jemand das Test-Programm und die so Datei fertig kompilliert für Linux hochladen?
- /usr/lib/libusb.so gibt es nicht
- Unter /usr/lib gibt es eine Verknüpfung "libusb-0.1.so.4" auf die Date /lib/libusb-0.1.so.4.4.4
- Ich habe dann die Dateien aus dem SF.net und die 3 Befehle anhand der INSTALL Anleitung eingetippt.
- Jetzt habe ich unter /user/local/lib die Datei libusb-1.0.so.0.0.0
- Die Dateien von Hr. Zimmermann lassen sich nicht kompillieren, denn "/usr/bin/ld: cannot find -lusb" + "testlibusb.pas(199,1) Error: Error while linking"
Ich habe mir eine Test-Applikation mit völlig überarbeiteter "libusb.pas" erstellt, die wollte ich nun unter Linux mal testen. Unter Windows mit Lazarus und Delphi geht die Unit bereits.
Im Anhang sende ich das Projekt. Kann das bitte jemand unter Lazarus/Linux öffnen und schauen ob im Baum die USB-Geräte gezeigt werden?
Unter Linux/Lazarus lässt es sich fehlerfrei kompillieren.
Das Problem mit meiner LibUSB unter Lazarus hätte ich gerne behoben. Kann mir bitte jemand das Test-Programm und die so Datei fertig kompilliert für Linux hochladen?
- Dateianhänge
-
V8_Test_USB_FPC_D7.zip
- (15.86 KiB) 106-mal heruntergeladen
EleLa - Elektronik Lagerverwaltung - www.elela.de
Re: Linux USB HID Device?
Mach nen Symlink namens libusb.so in /usr/lib (oder wo immer dein System das Ding sucht) erstmal auf
/lib/libusb-0.1.so.4.4.4
http://www.linuxwiki.de/SymLink" onclick="window.open(this.href);return false;
/lib/libusb-0.1.so.4.4.4
http://www.linuxwiki.de/SymLink" onclick="window.open(this.href);return false;
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Linux USB HID Device?
Du musst die libusb-devel pakete installieren sonst wird das mit deiner unit auch nicht gehen.- Die Dateien von Hr. Zimmermann lassen sich nicht kompillieren, denn "/usr/bin/ld: cannot find -lusb" + "testlibusb.pas(199,1) Error: Error while linking"
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 1579
- Registriert: Fr 10. Okt 2008, 23:54
- OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
- CPU-Target: 32/64Bit
Re: Linux USB HID Device?
Ich habe nun unter sidux in der Kommandozeile "apt-get install libusb-dev" eingegeben.
Nun findet meine Applikation auch die so Datei. Zumindest sag die EXE dass die Lib geladen wurde.
Ich habe das Sidux in der VirtualBox laufen. nachdem ich es endlich geschafft habe dass der USB Treiber von der VirtualBox funktionierte, bleibt jetzt die ganze VirtualBox hängen.
Es kommt noch viel schlimmer, selbst das Hauptprogramm, in dem ich die einzelnen Virtuellen PCs auswählen kann startet zwar, häng dann aber sofort.
Im Taskmanager häng noch die Datei VBoxSVC.exe, killen hilft...
Irgendwie kommt die Virtual-Box mit meinem USB Gerät nicht klar. Es meldet "Das USB Gerät xxxx konnte nicht an die virtuelle Maschine Linux gebunden werden."
Nun findet meine Applikation auch die so Datei. Zumindest sag die EXE dass die Lib geladen wurde.
Ich habe das Sidux in der VirtualBox laufen. nachdem ich es endlich geschafft habe dass der USB Treiber von der VirtualBox funktionierte, bleibt jetzt die ganze VirtualBox hängen.
Es kommt noch viel schlimmer, selbst das Hauptprogramm, in dem ich die einzelnen Virtuellen PCs auswählen kann startet zwar, häng dann aber sofort.

Im Taskmanager häng noch die Datei VBoxSVC.exe, killen hilft...
Irgendwie kommt die Virtual-Box mit meinem USB Gerät nicht klar. Es meldet "Das USB Gerät xxxx konnte nicht an die virtuelle Maschine Linux gebunden werden."
EleLa - Elektronik Lagerverwaltung - www.elela.de
-
- Beiträge: 27
- Registriert: Mo 11. Jun 2007, 10:12
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Linux USB HID Device?
Hallo
ich habe einmal die Erfahrungen und Beispiele aus diesem Thread genommen und mein Eigenbaumessgerät via USB eingebunden. Unter Windows XP funktioniert nun auch alles, aber nun bin ich an der Umsetzung der Linux Version gescheitert.
Das Einbinden der libusb-0.1.so.4.4.4 funktioniert.
Es werden ein Bus und 2 Devices gefunden, so wie es auch das Kommando lsusb anzeigt.
die Funktion liefert ^TUsbBus($084F9308) und ich denke dies ist ein Zeiger auf den Speicher in dem die Infos stehen.
Bis hierher scheint alles zu gehen.
Die Funktion
liefert aber ein nil und hier komme ich nicht weiter.
Wo kann ich da mit dem Suchen und Experimentieren weitermachen, oder gibt es schon eine verbesserte Version?
Bin im Netz nicht fündig geworden.
(openSuse 11.3 und Lazarus 0.9.29)
Gruß Bernd
ich habe einmal die Erfahrungen und Beispiele aus diesem Thread genommen und mein Eigenbaumessgerät via USB eingebunden. Unter Windows XP funktioniert nun auch alles, aber nun bin ich an der Umsetzung der Linux Version gescheitert.
Das Einbinden der libusb-0.1.so.4.4.4 funktioniert.
Code: Alles auswählen
usb_init();
usb_find_busses()
usb_find_devices();
Code: Alles auswählen
usb_bus := usb_get_busses();
Bis hierher scheint alles zu gehen.
Die Funktion
Code: Alles auswählen
dev := usb_bus^.devices;
Wo kann ich da mit dem Suchen und Experimentieren weitermachen, oder gibt es schon eine verbesserte Version?
Bin im Netz nicht fündig geworden.
(openSuse 11.3 und Lazarus 0.9.29)
Gruß Bernd
Zuletzt geändert von Lori am Fr 29. Apr 2011, 20:50, insgesamt 1-mal geändert.
Grund: Highlighter
Grund: Highlighter
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: Linux USB HID Device?
Wieso nicht ein "cat /proc/..." oder "lspci -v |grep USB"?
-
- Beiträge: 27
- Registriert: Mo 11. Jun 2007, 10:12
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
Re: Linux USB HID Device?
Hallo
Weil lsusb alles liefert was ich wissen muss:
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 04d8:000e Microchip Technology, Inc.
Bus 001 Device 006: ID 0781:5151 SanDisk Corp. Cruzer Micro Flash Drive
Ein USB-Bus mit den 3 Geräten und Ihren IDs.
Ich glaube die Variable usb_bus ist nicht richtig gesetzt, eventuell geht die Funktion usb_get busses() nicht so unter Linux.
Bernd
Weil lsusb alles liefert was ich wissen muss:
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 04d8:000e Microchip Technology, Inc.
Bus 001 Device 006: ID 0781:5151 SanDisk Corp. Cruzer Micro Flash Drive
Ein USB-Bus mit den 3 Geräten und Ihren IDs.
Ich glaube die Variable usb_bus ist nicht richtig gesetzt, eventuell geht die Funktion usb_get busses() nicht so unter Linux.
Bernd