Ich habe vor einiger Zeit ein Programm geschrieben, das die mpusbapi.dll https://github.com/mentatpsi/Microchip/ ... usbapi.dll mit USB4ALL von Sprut verwendet.
Nun wollte ich das Codefragment wiederverwenden, aber es funktioniert nicht mehr.
Nach langem rumprobieren mit versch. Windows-Versionen habe ich herausgefunden, dass es an der neueren Version von Pure-Basic liegt!
Folgender, aufs Minimum heruntergebrochene, Code ruft die Funktion "_MPUSBOpen" in PureBasic 4.10 korrekt auf, versagt aber mit der Version 5.62 (Rückgabewert -1):
Code: Alles auswählen
Selection.l
*SendData = AllocateMemory(64)
*RecvData = AllocateMemory(64)
vid_pid.s = "vid_04d8&pid_ff0b" ;für Sprut Gerät
out_pipe.s = "\MCHP_EP1" ;ein Backslash!
in_pipe.s = "\MCHP_EP1"
myOutPipe.l = 0
myInPipe.l = 0
MP_WRITE.l = 0
MP_READ.l = 1
Debug "Adresse Vid/Pid: " + Str(@vid_pid.s)
;Debug "Oeffnen der DLL:"
Ergebnis.l = OpenLibrary(0, "mpusbapi.dll")
Debug "Ergebnis OpenLibrary: " + Str(Ergebnis.l)
Ergebnis.l = CallCFunction(0, "_MPUSBGetDLLVersion")
Debug Str(Ergebnis.l)
Ergebnis.l = CallCFunction(0, "_MPUSBGetDeviceCount", @vid_pid.s)
Debug Str(Ergebnis.l)
myOutPipe.l = CallCFunction(0, "_MPUSBOpen", Selection.l, @vid_pid.s, @out_pipe.s, MP_WRITE.l, 0)
Debug "1. CallCFunction: " + Str(myOutPipe.l)
myInPipe.l = CallCFunction(0, "_MPUSBOpen", Selection.l, @vid_pid.s, @in_pipe.s, MP_READ.l, 0)
Debug "2. CallCFunction: " + Str(myInPipe.l)
FreeMemory(*SendData)
FreeMemory(*RecvData)
End
Was wurde hier geändert und wie krieg ich das wieder hin?
Vielen Dank!
Gruss Chregu