Seite 1 von 1

Mehrere Rückgabewerte aus DLL erhalten

Verfasst: 18.01.2015 11:00
von Klaus I.
Hallo zusammen,
ich wollte mich nach einigen Jahren Abstinenz wieder mit Purebasic beschäftigen. Im moment will ich anhand von Purebasic auf eine USB-Experimentierplatine von Velleman zugreifen. Das funktioniert mit der von Velleman mitgelieferten DLL ganz gut. Aber bei der DLL-Funktion "ReadAllAnalog" die zwei integer zurückgibt scheitere ich.

Code: Alles auswählen

PrototypeC ProtoOpenDevice(CardAddress.i)
PrototypeC ProtoReadAnalogChannel(Channel.i)
;PrototypeC ProtoReadAllAnalog()
PrototypeC ProtoReadAllAnalog(Data1.i, Data2.i)

OpenLibrary(0, "K8055D_X64.dll") ;K8055D.dll

Global OpenDevice.ProtoOpenDevice = GetFunction(0, "OpenDevice")
Global ReadAnalogChannel.ProtoReadAnalogChannel = GetFunction(0, "ReadAnalogChannel")

  Adress = 0
  Result = OpenDevice(Adress)
  Data1 = ReadAnalogChannel(1)
  Data2 = ReadAnalogChannel(2)
  Debug "Daten1=" +Str(data1)
  Debug "Daten2=" +Str(data2)
  
  Daten.ProtoReadAllAnalog = GetFunction(0, "ReadAllAnalog")
  Debug "DatenAlle=" +Str(daten)
  End
In dieser Form bekomme ich zumindest keine Fehlermeldung, allerdings kann ich mit dem Rückgabewert von "ReadAllAnalog" nichts anfangen.
Daten1=132
Daten2=135
DatenAlle=77203584
Wäre schön, wenn hier jemand einen Tipp für mich hätte.

Danke und Gruss
Klaus

Re: Mehrere Rückgabewerte aus DLL erhalten

Verfasst: 18.01.2015 11:32
von ts-soft
Klaus I. hat geschrieben:Aber bei der DLL-Funktion "ReadAllAnalog" die zwei integer zurückgibt scheitere ich.
Die gibt ja auch keine zwei Integer zurück, weil das ist schlicht unmöglich! Es kann nur ein Wert zurückgegeben
werden.

Allerdings wäre es möglich, das die Werte in die Parameter geschrieben werden :wink:

Code: Alles auswählen

PrototypeC ProtoReadAllAnalog(*Data1, *Data2)
Das sieht dann in etwas so aus:

Code: Alles auswählen

;...

data1 = 100
data2 = 200

;...


ReadAnalogChannel(@data1, @data2)

Debug data1
Debug data2

;...
Gruß
Thomas

Re: Mehrere Rückgabewerte aus DLL erhalten

Verfasst: 18.01.2015 12:14
von Klaus I.
Super, Dein Vorschlag funktioniert.
Vielen Dank!
Klaus