Seite 2 von 2
Re: Die CallCFunction Funktion mit iowkit.dll benutzen.
Verfasst: 24.10.2009 12:52
von H.Brill
Da hätte ich doch mal eine einfache
Frage. Warum gibt mir *Variable 0
zurück ? Die anderen Pointer-Funktionen
(@* und @) geben mir gültige Zeiger
zurück.
Code: Alles auswählen
Global mystr.s
Procedure Tata(sstr.s)
Debug sstr
Debug *sstr
Debug @sstr
Debug @*sstr
EndProcedure
mystr = "Hallo"
Tata(mystr)
End
Re: Die CallCFunction Funktion mit iowkit.dll benutzen.
Verfasst: 24.10.2009 13:16
von Thorium
Weil der Pointer *sstr 0 ist. sstr und *sstr sind 2 verschiedene Variablen *sstr ist nicht gleich @sstr.
Benutze EnableExplicit und sowas wird dir nicht mehr unbemerkt passieren.
Code: Alles auswählen
EnableExplicit
Global mystr.s
Procedure Tata(sstr.s)
Debug sstr
Debug *sstr
Debug @sstr
Debug PeekS(@sstr)
Debug @*sstr
EndProcedure
mystr = "Hallo"
Tata(mystr)
End
Debug @sstr
Debug @*sstr
Geben die richtigen Pointer. @*sstr gibt den Pointer zur neu erstellten Variable *sstr und @sstr den korrekten Pointer zu sstr.
Re: Die CallCFunction Funktion mit iowkit.dll benutzen.
Verfasst: 24.10.2009 16:11
von H.Brill
Danke, gut zu wissen.
Jetzt erhalte ich auch die Fehlermeldung
in Zeile 7 :
Bei EnableExplicit müssen Variablen deklariert werden : *sstr
Re: Die CallCFunction Funktion mit iowkit.dll benutzen.
Verfasst: 25.10.2009 15:12
von PBEDI
Hallo,
durch euch und noch ein Tipp aus dem codemerc Forum habe ich es geschafft und meine Relaiskarte läßt sich nun über buffer2 & buffer3 steuern. Vielen Dank!
Code: Alles auswählen
Import "iowkit.lib"
IowKitOpenDevice() As "_IowKitOpenDevice@0"
IowKitCloseDevice(devHandle.i) As "_IowKitCloseDevice@4"
IowKitGetNumDevs() As "_IowKitGetNumDevs@4"
IowKitGetDeviceHandle(devHandle.i) As "_IowKitGetDeviceHandle@4"
IowKitRead(devHandle.i, numPipe.l, buffer.l, length.l) As "_IowKitRead@16"
IowKitWrite(devHandle.i, numPipe.l, buffer.l, length.l) As "_IowKitWrite@16"
IowKitGetProductId(ioHandle) As "_IowKitGetProductId@4"
IowKitGetRevision(ioHandle) As "_IowKitGetRevision@4"
IowKitGetSerialNumber(ioHandle, Serial.s) As "_IowKitGetSerialNumber@8"
IowKitReadImmediate(ioHandle,buffer.s) As "_IowKitReadImmediate@8"
EndImport
IowKitOpenDevice()
ioHandle = IowKitGetDeviceHandle(1)
numPipe = 0
length = 3
Structure bufferByte
buffer1.c
buffer2.c
buffer3.c
EndStructure
Define.bufferByte buffer
buffer\buffer1 = 000
buffer\buffer2 = 255
buffer\buffer3 = 255
IowKitWrite(ioHandle, numPipe,buffer,length)
IowKitCloseDevice(iohandle)
End
gruß, Eric
Re: Die CallCFunction Funktion mit iowkit.dll benutzen.
Verfasst: 25.10.2009 15:26
von ts-soft
Die Strukture wird wohl nur im ASCII-Modus funktionieren, falls Du bereits PB 4.40 verwendest würde ich
zu dieser raten:
Code: Alles auswählen
Structure bufferByte
buffer1.a
buffer2.a
buffer3.a
EndStructure
Dann klappts auch mit dem Unicode Nachbarn
Gruß
Thomas
Re: Die CallCFunction Funktion mit iowkit.dll benutzen.
Verfasst: 25.10.2009 15:47
von PBEDI
Hallo,
habe mir die Beta installiert und die Variable(n) geändert
Jetzt kann ich auch eine Unicode Executable erstellen. Ohne funktioniert nämlich das Auslesen der "IowKitGetSerialNumber" nicht.
Danke
gruß, Eric