Linker oder Code Problem?
-
Moin moin,
Ich bin neu hier und hoffe mir kann jemand bei meinem Problem helfen
Vorab ich bin mit C++ noch nicht so bewandert, habe vor ein paar Monaten angefangen die Basics zu lernen. Ich bin mir auch nicht ganz sicher ob ich das richtige Thema erwischt habe...Ich besitze ein USB Board (Velleman K8055) welches ich programmieren wollte.
Header, .lib und dll. habe ich gedownloadet und gelinkt.
Ich möchte ein einfaches Programm schreiben welches das Board aufruft und die Digitalen Ausgänge auf 1 setzt. Erst hatte ich falsch gelinkt, da hatte der Compiler immer einen Fehler ausgegeben. Aber jetzt kommt kein Fehler und die Konsole startet auch, aber das Board macht nichts. Weiß jemand woran das liegen könnte?
Ich benutze Code::Blocks zum schreiben und compilieren.Vielen dank für eire Tipps
Gruß PaddyK8055D_C.h:
/***************************************************************** ****************************************************************** ** Microsoft Visual C++ 2005 Project for the K8055 USB I/O Card ** ** ** ** Copyright Velleman 2006 ** ** www.Velleman.be ** ** ** ** ** ** ** ** Developed by ** ** RE-Applications ** ** www.RE-Applications.be ** ****************************************************************** ******************************************************************/ #ifdef __cplusplus extern "C" { #endif #ifdef _CH_ #define FUNCTION #define __stdcall #pragma package <chk8055d_c> #include <chdl.h> LOAD_CHDL(K8055D_C); #include<stdbool.h> #else #define FUNCTION __declspec(dllexport) #endif FUNCTION long __stdcall OpenDevice(long CardAddress); void __stdcall CloseDevice(); FUNCTION long __stdcall ReadAnalogChannel(long Channel); void __stdcall ReadAllAnalog(long *Data1, long *Data2); void __stdcall OutputAnalogChannel(long Channel, long Data); void __stdcall OutputAllAnalog(long Data1, long Data2); void __stdcall ClearAnalogChannel(long Channel); void __stdcall ClearAllAnalog(); void __stdcall SetAnalogChannel(long Channel); void __stdcall SetAllAnalog(); void __stdcall WriteAllDigital(long Data); void __stdcall ClearDigitalChannel(long Channel); void __stdcall ClearAllDigital(); void __stdcall SetDigitalChannel(long Channel); void __stdcall SetAllDigital(); FUNCTION bool __stdcall ReadDigitalChannel(long Channel); FUNCTION long __stdcall ReadAllDigital(); FUNCTION long __stdcall ReadCounter(long CounterNr); void __stdcall ResetCounter(long CounterNr); void __stdcall SetCounterDebounceTime(long CounterNr, long DebounceTime); void __stdcall Version(); FUNCTION long __stdcall SearchDevices(); FUNCTION long __stdcall SetCurrentDevice(long lngCardAddress); #ifdef __cplusplus } #endifmain.cpp:
#include <iostream> #include <k8055D_C.h> using namespace std; int main() { OpenDevice(0); WriteAllDigital(1); }
-
Wahrscheinlich benutzt du die Funktionen falsch, bspw. hat OpenDevice einen Parameter CardAddress, für den du 0 übergibst -- ist das richtig? Lies die Dokumentation, da steht das hoffentlich drin. Und werte die Rückgaben aus, das sind wahrscheinlich Fehlercodes.