Probleme bei der Übergabe eine DIM Variable an eine DLL Fkt

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Probleme bei der Übergabe eine DIM Variable an eine DLL Fkt

Beitrag von mpz »

Hallo Leute,

ich habe folgendes Problem. Ich habe gerade einen PIC Microcontroller programmiert, der wie wild Daten sendet. Über eine mcHID.dll Bibliothek kann ich jetzt Informationen abfragen (Gerätetyp, Hersteller, Seriennummer etc.). Nur das Wichtigste, die Übergabe der Daten funktioniert nicht. Mein DatenPuffer ist und bleibt leer. Es ist vermutlich die Übergabe der Daten die falsch läuft. Hat jemand einen Tipp für mich?

Gruß Michael

Code: Alles auswählen

----Visual Basic Sourcecode

Declare Function hidRead Lib "mcHID.dll" Alias "Read" (ByVal pHandle As Long, ByRef pData As Byte) As Boolean

Private Const BufferInSize = 8
Dim BufferIn(0 to BufferInSize) as byte

hidRead(pHandle, BufferIn(0))

Hier jetzt mein Werk

Code: Alles auswählen


----Purebasic Sourcecode

hidRead = GetProcAddress_(mcHID_dll,"Read")

ProcedureDLL  hidRead (pHandle.l,pData.b)
    ProcedureReturn CallFunctionFast( hidRead, pHandle,pData)
EndProcedure

Global Dim BufferIn.b(8)

hidRead(DeviceHandle, @BufferIn(0))

; BufferIn(0-8) bleibt leer

; leider auch bei:  

hidRead(DeviceHandle, BufferIn(0))
; BufferIn(0-8) bleibt leer

Working on :lol: - LibSGD - MP3D Engine - 8)
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

Beitrag von ts-soft »

So in etwas sollte es gehen:

Code: Alles auswählen

Prototype hidRead(pHandle.l, *pData.b)

Define mcHID_DLL.l = OpenLibrary(#PB_Any, "mcHID.dll")

If mcHID_DLL
  Global hidRead.hidRead = GetFunction(mcHID_DLL, "hidRead")
EndIf

Global Dim BufferIn.b(8)

hidRead(DeviceHandle, @BufferIn())
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
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Beitrag von mpz »

Vielen Dank,

ich habe meine ganzen Bibliothekszugriffe geändert und schon flutscht es wie geschmiert. Jetzt kann ich einen PIC 18F2550 an einem USB Port verwenden. Das Senden und Auslesen von Daten funktioniert jetzt Bestens....

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
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

Beitrag von ts-soft »

Notfalls wäre ich rumgekommen, ist ja nicht so weit :wink:
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
Antworten