Mehrere Rückgabewerte aus DLL erhalten

Anfängerfragen zum Programmieren mit PureBasic.
Klaus I.
Beiträge: 2
Registriert: 01.01.2015 18:36

Mehrere Rückgabewerte aus DLL erhalten

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Mehrere Rückgabewerte aus DLL erhalten

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Klaus I.
Beiträge: 2
Registriert: 01.01.2015 18:36

Re: Mehrere Rückgabewerte aus DLL erhalten

Beitrag von Klaus I. »

Super, Dein Vorschlag funktioniert.
Vielen Dank!
Klaus
Antworten