mpusbapi.dll funktioniert nicht mehr

Für allgemeine Fragen zur Programmierung mit PureBasic.
Chregu
Beiträge: 16
Registriert: 22.12.2018 16:07
Wohnort: Viseu de Jos, Rumänien
Kontaktdaten:

mpusbapi.dll funktioniert nicht mehr

Beitrag von Chregu »

Hallo Foraner!
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
Der Aufruf "_MPUSBGetDLLVersion" und "_MPUSBGetDeviceCount" funktionieren nach wie vor!
Was wurde hier geändert und wie krieg ich das wieder hin?

Vielen Dank!
Gruss Chregu
Gruss Chregu
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: mpusbapi.dll funktioniert nicht mehr

Beitrag von Mijikai »

Evtl. ein String Problem vermutlich wird Ascii anstatt Unicode erwartet.
Chregu
Beiträge: 16
Registriert: 22.12.2018 16:07
Wohnort: Viseu de Jos, Rumänien
Kontaktdaten:

Re: mpusbapi.dll funktioniert nicht mehr

Beitrag von Chregu »

Uauaua! Ja genau, warum bin ich nicht draufgekommen? Werde es ausprobieren und berichten!

Gruss Chregu

Edit: Ja jetzt gehts:

Code: Alles auswählen

*out_pipe   = Ascii("\MCHP_EP1")         ;ein Backslash!
*in_pipe    = Ascii("\MCHP_EP1")

Code: Alles auswählen

vid_pid.s   = "vid_04d8&pid_ff0b"
geht lustigerweise!
Gruss Chregu
Antworten