Naja, Hauptsache Du hast auch eine Dokumentation zur DLL, weil erraten kann man
die Zahl der Parameter und Ihren Typ nicht!
Ist übrigens nur unter 32-Bit wichtig, ob Import oder ImportC, weil 64-Bit nutzt immer
FastCall als Konvention. Diese DLL nutzt offentsichtlich CDECL, also ImportC!
Eigentlich solltest Du die SerialPort-Lib von PB nutzen können, statt der DLL, weil der eigentliche
Treiber sollte schon geladen sein. Diese DLL nutzt wahrscheinlich nur als Programmierhilfe für
andere Sprachen und ist somit für PB hinfällig.
Die DLL nutzt ASCII-Text, mehr konnte ich nicht rausbekommen, weil ich keine Lust habe, mir
diese zu Installieren (kommt nur als Setup.exe und MSI-Datei).
Viel Erfolg,
Thomas
DLL Einbinden
- 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: DLL Einbinden
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 390
- Registriert: 30.08.2004 09:05
- Computerausstattung: Desktop
Windows 10 Pro x64
CPU: AMD Ryzen 5 2600 3.40 GHz
Ram: 16GB RAM
Grafik: NVIDA Geforce 1060
PB: 5.72 X86/X64 - Wohnort: Heidelberg
Re: DLL Einbinden
Mal auf deinem PC geschaut ob die irgendwo zu finden ist?
Windows 10 x64 Pro - PB 5.61 X64 / x32 - PB 4.6 x32
-
- Beiträge: 8
- Registriert: 01.10.2015 07:29
- Computerausstattung: Lenovo ThinkPad I7, Apple miniMAC, Lenovo Thinkserver
- Wohnort: Furtwangen
- Kontaktdaten:
Re: DLL Einbinden
Habe nun die 32 Bit-Variante installiert.
Nun ist zumindest der Fehler mit der fehlenden DLL weg.
Habe nun folgenden Code probiert.
Normalerweise müsste doch der Rückgabewert "handle" oder "C" auch in der CANUSBdrv.lib definiert werden.
Kann mir jemand sagen wie ich das schreiben muss ?
Im Moment wird das Handle mit 0 zurückgegeben was ja vermutlich an dem fehlenden Rückgabeparameter liegt.
Nun ist zumindest der Fehler mit der fehlenden DLL weg.
Habe nun folgenden Code probiert.
Code: Alles auswählen
c.l
; Libname: canusbdrv.lib
; created: 2015/10/05 15:19
ImportC "canusbdrv.lib"
canusb_Close(handle.i) As "_canusb_Close@4"
canusb_Open(szID.s, szBitrate.s, _code.l, _mask.l, flags.l) As "_canusb_Open@20"
EndImport
szID.s = "";
szBitrate.s = "0x3:0x1C";
_code.l = $00000000;
_mask.l = $FFFFFFFF;
flags.l = 0;
handle.l
handle = canusb_Open(szID, szBitrate, _code, _mask, flags);
Debug handle ;
c = canusb_Close(handle)
Debug c;
Kann mir jemand sagen wie ich das schreiben muss ?
Im Moment wird das Handle mit 0 zurückgegeben was ja vermutlich an dem fehlenden Rückgabeparameter liegt.
Hardware: Mimot Advantage, Mydata TP9, Ekra E1-V, SMT-400C, Dima Breeze, Dima DD500, Emco Compact8, ISEL Miniflat.
Software: PureBasic 5.31, EasyWinArt, Geomagic Design, Pulsonix, Altium, Proteus, CCS Compiler for PIC, CrossStudio for ARM, JumpStarter C for AVR
Software: PureBasic 5.31, EasyWinArt, Geomagic Design, Pulsonix, Altium, Proteus, CCS Compiler for PIC, CrossStudio for ARM, JumpStarter C for AVR
Re: DLL Einbinden
Ich weis jetzt nicht genau was du meinst. Die art des Rückgabewertes kann man so angeben:
Ich hab auch gleichzeitig dein .s durch p-ascii ersetzt. Strings gibt es bei C nicht in der Form wie bei PureBasic, man sollte da immer die Pseudotypes verwenden.
Code: Alles auswählen
ImportC "canusbdrv.lib"
canusb_Close.l(handle.i) As "_canusb_Close@4"
canusb_Open.l(szID.p-ascii, szBitrate.p-ascii, _code.l, _mask.l, flags.l) As "_canusb_Open@20"
EndImport
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!