 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4686 Wohnort: ~/
|
Verfasst am: 11.08.2016, 00:12 Titel: |
|
|
Code: | declare function libusb_init(byval ctx as libusb_context ptr ptr = 0) as long |
sofern der optionale Parameter in der Funktion ebenso gewählt wurde. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 11.08.2016, 00:23 Titel: |
|
|
BD hat Folgendes geschrieben: | Nachtrag: Mit usb-1.0 statt libusb-1.0 findet er die Bibliothek. Problem ist noch der optionale Parameter in der libusb_init(). |
Wie du bereits selbst herausgefunden hast, hilft hier das entfernen des "lib" vor dem Bibliotheksname.
Unter Linux wird das "lib" automatisch vor dem Bibliotheksname gesetzt. So wie auch deren Endung ".so" angehängt wird.
Daher reicht die Angabe der eigentlichen Bibliotheksbezeichnung. Der Rest wird vom Kompiler / Linker übernommen.
Bezüglich dem Optionalparameter: Siehe ein Post weiter oben (von @Nemored).
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
BD
Anmeldungsdatum: 14.01.2014 Beiträge: 38
|
Verfasst am: 13.08.2016, 13:53 Titel: |
|
|
Könnte mir da jemand nochmal ein Beispiel geben, wie man dies hier umsetzt?
z. B.:
Code: | int LIBUSB_CALL libusb_get_port_numbers(libusb_device *dev, uint8_t* port_numbers, int port_numbers_len);
LIBUSB_DEPRECATED_FOR(libusb_get_port_numbers)
int LIBUSB_CALL libusb_get_port_path(libusb_context *ctx, libusb_device *dev, uint8_t* path, uint8_t path_length); |
----------------------------------
Nachtrag (OT):
Ich habe gerade mal angefangen meine total veralteten C-Kenntnisse aus Unix-Zeiten aufzufrischen, sodass ich mein Temp-Programm dann gleich auch in C++ schreiben kann. Dennoch reizt mich nach wie vor die Umsetzung in FreeBASIC. Mal sehen, was ich eher zum Laufen bekomme. |
|
Nach oben |
|
 |
BD
Anmeldungsdatum: 14.01.2014 Beiträge: 38
|
Verfasst am: 14.08.2016, 23:22 Titel: |
|
|
Das C++ - Programm läuft:
Code: | /*
Compilierung:
g++ tempusb.cpp -otempusb -lusb-1.0
./tempusb
*/
#include <stdio.h>
#include <libusb-1.0/libusb.h>
#include <stdint.h>
#include <string.h>
#include <iostream>
using namespace std;
int main(void) {
/************/
int res=0;
libusb_device_handle* handle=0;
int kernelDriverDetached=0;
int numBytes=0;
unsigned char buffer[64];
res=libusb_init(0);
if (res!=0) {
fprintf(stderr, "Fehler: Init libusb.\n");
return 1;
}
handle=libusb_open_device_with_vid_pid(0,0x16c0,0x0480);
if (!handle) {
fprintf(stderr,"Fehler: Gerätezugriff.\n");
return 1;
}
if (libusb_kernel_driver_active(handle,0)) {
res=libusb_detach_kernel_driver(handle,0);
if (res==0) {
kernelDriverDetached=1;
}
else {
fprintf(stderr,"Fehler: Detaching Kerneltreiber.\n");
return 1;
}
}
res=libusb_claim_interface(handle,0);
if (res!=0) {
fprintf(stderr,"Fehler: Claiming Interface.\n");
return 1;
}
res=libusb_interrupt_transfer(handle,0x81,buffer,64,&numBytes,5000);
if (res==0) {
if (numBytes == 64) {
cout << buffer[4]+buffer[5]*256 << "\n";
}
else {
printf("Empfangen %d Byte(s), anstelle von 64.\n",numBytes);
}
}
else
{
fprintf(stderr,"Fehler: Datenübertragung.\n");
}
res=libusb_release_interface(handle,0);
if (res!=0) {
fprintf(stderr, "Fehler: Releasing Interface.\n");
}
if (kernelDriverDetached) {
libusb_attach_kernel_driver(handle,0);
}
libusb_exit(0);
return 0;
} |
|
|
Nach oben |
|
 |
BD
Anmeldungsdatum: 14.01.2014 Beiträge: 38
|
Verfasst am: 25.08.2016, 15:31 Titel: |
|
|
Leider hänge ich nach wie vor an der Umsetzung der Header-Datei zu FreeBASIC. Naja, zumindest das C++-Programm läuft. Demnach liegt es wohl nur an meinen fehlerhaften Umsetzungen in eine bi-Datei. Fallls es irgendwann mal jemand hinbekommen sollte, die Header-Datei von libusb-1.0 zu FreeBASIC zu konvertieren, bitte kurz hier posten.
Vielleicht bekomme ich es ja auch nochmal hin. Dann poste ich hier das Ergebnis.
PS: Allen vielen Dank für die vielen Tipps.  |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|