Gambas unterstuetzt den Aufruf von Funktionen aus externen C-Bibliotheken (denn darum handelt es sich bei der Schnittstelle, die in einem der Photos oben abgebildet ist) - es braucht lediglich etwas Assistenz deinerseits.
Es gibt drei Seiten in der Gambas-Dokumentation[0][1][2] ueber das EXTERN-Schluesselwort und Konsorten und deren Einsatz. Nicht erschrecken, an diesem Punkt ist die Dokumentation auszerordentlich extensiv.
Als erstes musst du die Schnittstelle analysieren:
* Welche externe(n) Bibliothek(en)?
* Welche Funktion(en)?
* Fuer jede Funktion: Wie sieht ihre Signatur aus? Wie muss sie auf Gambas-Datentypen abgebildet werden?
In diesem Fall handelt es sich um die Bibliothek "libad4" und die Funktion "ad_open", sie gibt einen int32_t zurueck (Integer ist der zugehoerige Gambas-Datentyp). Sie erwartet einen const char * als Parameter, das ist in Gambas ein String.
Das Ergebnis ist folgendes:
Code: Alles auswählen
Extern ad_open(sName As String) As Integer In "libad4"
Public Sub Form_Open()
Dim adh As Integer
adh = ad_open("usb-ad")
If adh = -1 Then Error.Raise("Failed to open USB-AD device")
End
Eine Anmerkung zum Quelltext: "adh" ist die C-Art Variablen zu nennen. In Gambas gibt es andere Konventionen. Es steht dir natuerlich frei, ihr nicht zu folgen, aber man wuerde in Gambas statt "adh" eher "iHandle" o.ae. schreiben.
Ich bin zuversichtlich, dass es funktioniert. Allerdings habe ich diese Bibliothek nicht vorliegen (noch die Hardware), um einen wirklichen Test durchzufuehren.
[0]
http://gambasdoc.org/help/lang/extdecl?v3
[1]
http://gambasdoc.org/help/cat/externfunc?v3
[2]
http://gambasdoc.org/help/howto/extern?v3
PS: Du solltest auf Gambas3 umsteigen, wenn es irgend moeglich ist.
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!