Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

LibUSB-1.0 unter Raspbian Jessie in FreeBASIC 1.06 einbinden
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Linux-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 11.08.2016, 00:12    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1837
Wohnort: [JN58JR]

BeitragVerfasst am: 11.08.2016, 00:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
BD



Anmeldungsdatum: 14.01.2014
Beiträge: 38

BeitragVerfasst am: 13.08.2016, 13:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
BD



Anmeldungsdatum: 14.01.2014
Beiträge: 38

BeitragVerfasst am: 14.08.2016, 23:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
BD



Anmeldungsdatum: 14.01.2014
Beiträge: 38

BeitragVerfasst am: 25.08.2016, 15:31    Titel: Antworten mit Zitat

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. zwinkern

PS: Allen vielen Dank für die vielen Tipps. lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Linux-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
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.

 Impressum :: Datenschutz