uwe
Anmeldungsdatum: 02.09.2008
Beiträge: 1
Verfasst am: 02 Sep 2008 14:25 Titel: DLL-Initialisierung
--------------------------------------------------------------------------------
Im alten Forum wurde vor einiger Zeit die DLL-Initialiserung besprochen. Da keine neueren Beiträge dort zu finden waren .. hier noch ein kleiner Nachtrag:
Problemstellung: Zur Laufzeit (beim Laden der DLL) soll die Anzahl der Ein- und Ausgänge und deren Bezeichnung festgelegt werden.
Lösung (mit dokumentierten Funktionen):
Beim Laden (Einbinden) der DLL in ProfiLab werden zur Initialisierung in einer bestimmten Reihenfolge Funktionen aufgerufen, z.B.:
1. Funktionsaufruf: NumInputs();
2. Funktionsaufruf: NumOutputs();
...
Durch Umschreiben der Funktion NumInputs() kann man vor Rückgabe der Anzahl der Eingänge eine beliebige Initialisierung vornehmen.
Meine Lösung basiert auf der Verwendung einer Klasse, die die gleichen ProfiLab-Parameter und -Funktionen zur DLL-Einbingund beinhaltet.
Code:
// c++
static PL_DLL_Template dll; // eigene Klasse ..
//Aufruf von PROFILAB, liest Anzahl der Eingänge
DLLEXPORT unsigned char _stdcall NumInputs()
{
dll = PL_DLL_Template();
return dll.Inputs;
}
//Aufruf von PROFILAB, liest Anzahl der Ausgänge
DLLEXPORT unsigned char _stdcall NumInputs()
{
return dll.Outputs;
}
//Aufruf von PROFILAB, liest die Namen der Eingänge
DLLEXPORT void _stdcall GetInputName(unsigned char Channel, unsigned char *Name)
{
dll.GetInputName(Channel, Name);
}
//Aufruf von PROFILAB, liest die Namen der Eingänge
DLLEXPORT void _stdcall GetOutputName(unsigned char Channel,unsigned char *Name)
{
dll.GetOutputName(Channel, Name);
}
Durch diese Vorgehensweise werden die vorgegebenen Export-Funktionen usw. einfach mit den Funktionen usw. der Klasse verknüpft. Ein Problem kann auftreten, wenn die DLL mehrfach in einem Projekt verwendet wird. Dann wird auf die global definierte Klasse gleichzeitig zugegriffen und kann ggf. zu Fehlern führen. Eine Lösung für diesen Problemfall ist z.B. durch ein Klassen-Array oder andere Listenstrukturen usw. denkbar. Bei Bedarf stelle ich den Code zur Verfügung.
DLL-Initialisierung
Zurück zu „DLL-Programmierung“
Gehe zu
- SOFTWARE-UPDATES
- ProfiLab
- ↳ PROFILAB Kundenprojekte und Aufgabenstellungen
- ↳ Einsteigerfragen / FAQ
- ↳ Darstellung / Visualisierung
- ↳ Zählfunktionen, Zeitsteuerung und Programmablauf
- ↳ Messwertverarbeitung
- ↳ STRING-Verarbeitung
- ↳ Datenschnittstellen
- ↳ Hardware-Anbindung, I/O-Schnittstellen
- ↳ (Fern-)Bedienung / Externe Eingabegeräte
- ↳ Plattformen / PC-Systeme
- ↳ Aus- und Weiterbildung
- ↳ Makros & Schaltungen
- ↳ Projekte
- ↳ Heizungssteuerung
- ↳ Ofensteuerung
- ↳ Elektrische Antriebe
- ↳ Wetter und Klima
- ↳ Kraftfahrzeugtechnik
- ↳ Lichttechnik
- ↳ Multimedia
- ↳ Messtechnik
- ↳ Haussteuerungen
- ↳ Modellbau
- ↳ Elektronik und µ-Controller
- ↳ DLL-Programmierung
- ↳ Kundenspezifische Jobangebote rund um ProfiLab
- ↳ PROFILAB SOFTWARE Support
- ↳ Thema: Frontplatte und Frontplattenelemente
- ↳ Thema: Schaltung und Bauteile
- ↳ Thema: Makros
- ↳ Thema: Compiler
- ↳ Thema: Installation, Updates, Plattformen
- ↳ Thema: Geschwindigkeit und Systemauslastung
- ↳ Thema: ProfiLab-WebServer
- ↳ Thema: Anregungen zu ProfiLab
- ↳ PROFILAB HARDWARE Support
- ↳ Thema Hardware-Beispiele / Examples
- ↳ Thema Schaltungsaufbau, EMV, Störungen
- ↳ Thema RS232
- ↳ Thema Modbus
- ↳ Thema Temperatur
- ↳ Thema Relais
- ↳ Thema Multimeter
- ↳ Thema GPIB
- ↳ Thema Portzugriffe und LPT
- ↳ Geräte: ABACOM
- ↳ Geräte: BMCM
- ↳ Geräte: Conrad / Voltcraft
- ↳ Geräte: Deditec
- ↳ Geräte: DLP-Design
- ↳ Geräte: ELV
- ↳ Geräte: Greisinger
- ↳ Geräte: H-Tronic
- ↳ Geräte: Hygrosens
- ↳ Geräte: IO-Warrior
- ↳ Geräte: Kolter Electronic
- ↳ Geräte: LabJack
- ↳ Geräte: Meilhaus
- ↳ Geräte: Quancom
- ↳ Geräte: Velleman
- ↳ Weitere Geräte
- RealView
- ↳ REALVIEW SOFTWARE Support
- ↳ Einsteigerfragen / FAQ
- ↳ Kundenprojekte
- ↳ Anregungen
- ↳ REALVIEW HARDWARE Support
- sPlan
- ↳ SPLAN SOFTWARE Support
- ↳ Thema: Bibliotheken, Bauteile und Symbole
- ↳ Thema: Schaltpläne zeichnen und bearbeiten
- ↳ Thema: Seitenverwaltung, Blätter, Formblätter, Zoom
- ↳ Thema: Import, Export und Drucken
- ↳ Thema: Installation, Versionen, Updates, Plattformen
- ↳ Thema: Anregungen zu sPlan
- ↳ SPLAN SYMBOLE - Tauschbörse
- ↳ sPlan-Symbole: Elektronikbauteile, µ-Controller, Röhren und Halbleiter
- ↳ sPlan-Symbole: Installation und Anlagenbau, SPS
- ↳ sPlan-Symbole: Andere Fachgebiete, Pneumatik, Hydraulik, Kfz, etc.
- ↳ sPlan 8.0 - Demoversion
- Sprint-Layout
- ↳ SPRINT-LAYOUT SOFTWARE Support
- ↳ Einsteigerfragen / FAQ
- ↳ Thema: Platinenherstellung / Fertigungstechnik
- ↳ Thema: Isolationsfräsen und Bohren
- ↳ Thema: Gerberdateien
- ↳ Thema: Makros und Bauteile
- ↳ Thema: Lötaugen, Pads, Leiterbahnen, Masse
- ↳ Thema: Layer, Lötstop, Umriss
- ↳ Thema: Koordinaten und Raster
- ↳ Thema: Import, Export und Drucken
- ↳ Thema: Installation, Versionen, Updates, Plattformen
- ↳ Thema: Anregungen zu Sprint-Layout
- ↳ Kundenprojekte
- LochMaster
- ↳ LOCHMASTER SOFTWARE Support
- ↳ LochMaster - Tauschbörse
- ↳ Einsteigerfragen / FAQ
- ↳ Kundenprojekte
- ↳ Installation, Updates, Plattformen
- ↳ Anregungen
- FrontDesigner
- ↳ FRONTDESIGNER SOFTWARE Support
- ↳ FrontDesigner: Anregungen
- ↳ HPGL-Export, Fräsen und Gravieren
- AudioWave
- ↳ AUDIOWAVE SOFTWARE Support
- ↳ AudioWave: Anregungen
- ... und mehr von www.electronic-software-shop.com
- ↳ Link zum ABACOM - Webshop
- ↳ USB-µPIO / netPIO
- ↳ Fimware /TEMP12
- ↳ Fimware /GPIO18
- ↳ Fimware /INCR3
- ↳ Fimware /FREQ
- ↳ Fimware /PWMIO18
- ↳ USB-ADC Messmodul, 12 Bit
- ↳ USB-LRB Relaiskarte, 8-fach
- ↳ USB-LCD Textdisplay, 4x20
- ↳ Andere Artikel
- Sonstiges
- ↳ Sonstiges