Konfiguration einer DLL (FHZ 1300) mit Setup Dialog

Antworten
weisskarsten
Beiträge: 22
Registriert: Dienstag 21. Oktober 2008, 18:18

Konfiguration einer DLL (FHZ 1300) mit Setup Dialog

Beitrag von weisskarsten » Montag 4. Oktober 2010, 10:19

Hallo Profilabgemeinde

Wer kann helfen ???
Ich habe eine DLL für die FHZ1300 geschrieben, welche ermöglicht die Komponenten von EL* in fast komplettem Funktionsumfang in PL
einzubinden.
Leider fehlt mir noch der "Config Button" in dieser DLL um zB. die Hausadresse einzugeben. Im Moment wird dies alles noch über ext. Pins an der Dll erledigt. Ist nicht gerade schön.
Die Dll ist mit Dev-C++ programmiert. Vieleicht kann jemand ein kleines Beispiel zeigen, wie man einen Zahlenwert von einer Editbox in eine Variable für Profilab bekommt. Im Beispiel Counter ist nur "nichts zu configurieren" enthalten.
Nach Fertigstellung dieser DLL stelle ich diese DLL gerne im Forum zur verfügung.

Mit freundlichen Grüßen
K. Weiß
Zuletzt geändert von weisskarsten am Montag 4. Oktober 2010, 11:52, insgesamt 1-mal geändert.

Udo_Olaf
Beiträge: 33
Registriert: Samstag 18. September 2010, 12:15

Re: Konfiguration einer DLL

Beitrag von Udo_Olaf » Montag 4. Oktober 2010, 11:08

Hallo Karsten,

genau mit diesem Thema habe ich mich auch beschäftigt.

Ausser den Funktionen
unsigned char CNumInputs(void) und unsigned char CNumOutputs(void) gibt es die erweiterte Funktionen
unsigned char CNumInputsEx(double* puser) und unsigned char CNumOutputsEx(double* puser). Wie man sehen kann wird in den ertweiterten Funktionen ein Zeiger auf puser übergeben.
In der Funktion void CConfigure(double* puser) kannst Du bis zu 100 Werte (Index 0..99) in puser speichern. puser[100] wird von ProfiLab als Instanzindex für die DLL verwendet - da darf man also nicht dran.

Wenn der Setup Dialog mit Ok verlassen wird, dann werden die Funktionen CNumInputsEx(), CNumOutputsEx(), GetInputName() und GetOutputName() erneut aufgerufen.
Die beiden erweiterten Funktionen sollten dann anstatt einer Konstante natürlich einen puser Wert zurückgeben.
Diese Werte kannst Du dann in globalen unsigned char Variablen speichern und sie in CSimStart(), CCalculate() und CSimStop() verwenden.

Beispiel für die erweiterten Funktionen:

// ProfiLab reads the number of inputs
_declspec(dllexport) unsigned char _stdcall CNumInputsEx(double* puser)
{
return (U08)puser[0];
}
//-----------------------------------------------------------------------------

// ProfiLab reads the number of outputs
_declspec(dllexport) unsigned char _stdcall CNumOutputsEx(double* puser)
{
return (U08)puser[1];
}
//-----------------------------------------------------------------------------

Einstellungen in puser bleiben erhalten weil das Array mit in der Projektdatei gespeichert wird.

Hoffentlich hilft´s...

Grüße

Udo_Olaf

weisskarsten
Beiträge: 22
Registriert: Dienstag 21. Oktober 2008, 18:18

Re: Konfiguration einer DLL

Beitrag von weisskarsten » Montag 4. Oktober 2010, 11:38

Hallo Udo_Olaf

Danke für die schnelle Antwort.
Wenn ich dich richtig verstanden habe, muß ich aber trotzdem meine Werte an Pins der Dll übergeben. Ich kann keinen Ansatz erkennen wie ich im Konfigurationsdialog ein Eingabefeld erzeuge und dort Werte übergeben kann. Der Button "OK" allein hilft wenig.

Mit freundlichen Grüßen
K.Weiß

Udo_Olaf
Beiträge: 33
Registriert: Samstag 18. September 2010, 12:15

Re: Konfiguration einer DLL

Beitrag von Udo_Olaf » Montag 4. Oktober 2010, 11:57

Hallo Karsten,

in CConfigure() musst Du natürlich einen geeigneten Dialog aufrufen wo man die einstellbaren Werte eingeben kann. Wenn Du keinen Dialog in C schreiben kannst, dann wird es für Dich wohl einfacher sein "pin" zu verwenden.

Allerdings sind bei den meisten Compilern Beispiele mit Dialogfenster dabei. Die braucht man nur auf seinen Bedarf zu ändern. Das einfachste Dialogfenster in Beispielanwendungen ist die "AboutBox" wo man nur Ok klickt.

Grüße

Udo_Olaf

weisskarsten
Beiträge: 22
Registriert: Dienstag 21. Oktober 2008, 18:18

Re: Konfiguration einer DLL (FHZ 1300) mit Setup Dialog

Beitrag von weisskarsten » Montag 4. Oktober 2010, 12:41

Hallo Udo_Olaf

Leider ist bei DEV-C++ kein Beispiel dabei. Nach zahlreichen erfolglosen GOOGLE Versuchen erhoffte ich mir hier eine Antwort.

Wir sind also wieder am Anfang des Beitrages, da deine Antwort nur ein Kommentar auf meine Fragestellung ist und mir nicht wirklich weiter hilft.
Trotzdem Danke

Mit freundlichen Grüßen
K.Weiß

Udo_Olaf
Beiträge: 33
Registriert: Samstag 18. September 2010, 12:15

Re: Konfiguration einer DLL (FHZ 1300) mit Setup Dialog

Beitrag von Udo_Olaf » Montag 4. Oktober 2010, 12:54

Hallo Karsten,

1. Hast Du nach meinem 1. Beitrag den Betreff geändert. Vorher war mir nicht klar, dass es Dir nur um den Dialog geht.
2. Gehe ich davon aus, dass Dir die Zusammenhänge nicht klar waren - insofern sind wir nicht so weit wie am Anfang.
3. Um es klar zu sagen: ein Dialogfenster programmieren zu können gehört zu den Grundlagen in C.
4. Ist das hier kein C Programmierkurs.

Grüße

Udo

weisskarsten
Beiträge: 22
Registriert: Dienstag 21. Oktober 2008, 18:18

Re: Konfiguration einer DLL (FHZ 1300) mit Setup Dialog

Beitrag von weisskarsten » Montag 4. Oktober 2010, 13:47

Hallo Udo_Olaf

Wenn du keine Antwort geben willst (oder kannst) dann halte dich bitte aus diesem Beitrag raus.
Da es zu den Grundlagen gehöhrt ein Dialogfenster zu programmieren, wo liegt da das Proplem eines kleinen Beispiels oder Link's wo man was findet??
Man kann konstruktive Antworten geben oder sollte sich raushalten. Posten nur um sich wichtig zu machen oder Andern zu sagen das sie keine Ahnung haben hilft keinem weiter.
Klare Frage --> klare Antwort darf doch eigentlich nicht so schwierig sein.

Schönen Tag noch

Karsten

weisskarsten
Beiträge: 22
Registriert: Dienstag 21. Oktober 2008, 18:18

Re: Konfiguration einer DLL (FHZ 1300) mit Setup Dialog

Beitrag von weisskarsten » Dienstag 5. Oktober 2010, 10:04

Hallo

Ist wohl doch nicht so easy ?? oder ist keiner bereit sein Wissen weiterzugeben.
Es gibt doch bestimmt Spezis unter Euch die das schon gemacht haben.


freundliche Grüße
Karsten

weisskarsten
Beiträge: 22
Registriert: Dienstag 21. Oktober 2008, 18:18

Re: Konfiguration einer DLL (FHZ 1300) mit Setup Dialog

Beitrag von weisskarsten » Mittwoch 6. Oktober 2010, 11:45

Hallo

Habe versucht ein paar "Hausaufgaben" zu machen.

folgender Code erstellt ein Fenster mit einer Editbox und einem Button. In einer normalen Windowsapplikation (als *.exe) funktioniert das alles wunderbar.

Die Einbindung in die Funktion "DLLEXPORT void _stdcall CConfigure(double *PUser)" ist mir jedoch nicht gelungen.
Was ist falsch ??

Mit freundlichen Grüßen
Karsten


#include <windows.h>

#define ID_EDIT 1
#define ID_BUTTON 2
static HWND hwndEdit;
static HWND hwndButton;
// static HWND hwndButton1;
static int len;
static TCHAR text[30];


char usertext;

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{




switch(msg)
{
case WM_CREATE:
hwndEdit = CreateWindow(TEXT("Edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
50, 50, 150, 20, hwnd, (HMENU) ID_EDIT,
NULL, NULL);

hwndButton = CreateWindow(
TEXT("button"), TEXT("Set Title"),
WS_VISIBLE | WS_CHILD,
50, 100, 80, 25,
hwnd, (HMENU) ID_BUTTON, NULL, NULL);

/*
hwndButton1 = CreateWindow(
TEXT("button"), TEXT("Set Title1"),
WS_VISIBLE | WS_CHILD,
60, 120, 90, 35,
hwnd, (HMENU) ID_BUTTON, NULL, NULL);

*/
break;

case WM_COMMAND:
if (HIWORD(wParam) == BN_CLICKED) {
len = GetWindowTextLength(hwndEdit) + 1;
GetWindowText(hwndEdit, text, len);
SetWindowText(hwnd, text);
usertext= GetWindowText(hwndEdit, text, len);
}
break;

case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
MSG msg ;
WNDCLASS wc = {0};
wc.lpszClassName = TEXT( "Edit Control" );
wc.hInstance = hInstance ;
wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
wc.lpfnWndProc = WndProc ;
wc.hCursor = LoadCursor(0,IDC_ARROW);


RegisterClass(&wc);
CreateWindow( wc.lpszClassName, TEXT("Edit control"),
WS_OVERLAPPEDWINDOW | WS_VISIBLE,
220, 220, 280, 200, 0, 0, hInstance, 0);

while( GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int) msg.wParam;
}

weisskarsten
Beiträge: 22
Registriert: Dienstag 21. Oktober 2008, 18:18

Re: Konfiguration einer DLL (FHZ 1300) mit Setup Dialog

Beitrag von weisskarsten » Montag 18. Oktober 2010, 22:21

Hallo Profilabgemeinde

Danke für die zahlreichen Antworten auf meine Fragen.
Außer "heisse Luft" und "Selbstdarstellung" kann man hier wahrscheinlich nichts mehr erwarten.
Schade eigentlich. Profilab ist absolut Spitze für kleine und mittlere Entwicklungen. Leider kann man bei speziellen Problemen sich seine Frage in diesem Forum schenken. Das ist mir bei der Betrachtung vieler Beiträge aufgefallen.
Wissen wird nur sehr knapp weitergegeben.
Hatte eigentlich die Absicht die FHZ 1300 dll hier zu veröffentlichen. Da aber scheinbar kein Interesse besteht lasse ich das.
Die Steuerung der Komponenten von EL* -->FHT 80 und FS 20 sind lohnenswerte Projekte.
Ich habe meine Haussteuerung bereits seit 4 Jahren mit diesen Komponeneten störungsfrei laufen, allerdings mit Software von IPSYMCO* die doch einiges zu wünschen übrig läst.
Die jetzige Realisierung mit Profilab ist da wesentlich flexibler. Auch wenn die DLL noch Schönheitsfehler hat, sie funktioniert.
Vielleicht finde ich in anderen Foren meine Antworten.

Mit besten Grüßen
K.Weiß

irrerpolterer
Beiträge: 102
Registriert: Mittwoch 19. November 2008, 16:20

Änderung des Themas: Kummerkasten und wie weit kann ich Hilf

Beitrag von irrerpolterer » Dienstag 19. Oktober 2010, 09:54

Hallo!

Jetzt geht es nicht mehr um die DLL-Erstellung, nicht?

Änderung des Themas: Kummerkasten und wie weit kann ich Hilfe im Forum bekommen.

Es ist eine freiwillige Angelegenheit hier zu helfen. Ich sehe wieviel Leute sich Beiträge ansehen und sich die Ergebnisse abgreifen. Wenn das Thema uninteressant oder kompliziert erscheint, sind Antworten schlicht selten. Am besten sind die newbies dran, ihnen wird am leichtesten und schnellsten geholfen. Das wird in anderen Foren ähnlich sein, dummerweise gibt es nicht so viele aktive Mitglieder hier im Forum. Einige mit viel Ahnung sind schon vergrault ausgestiegen, schade. Weil sie ihre Arbeit zurecht ernst nehmen und nicht lässigen Umgang mit PLE-Themen pflegen. Ich erinnere mich, daß für einige die DLL-Erstellung oft das Ende hier in der Community war: ZB. EZGPIB, nochmals ehrlich vielen Dank an Herrn Bangert. Ich finde es schlimm gute Leute zu verlieren. Dem werden die meisten hier sicher zustimmen.

Wie oft habe ich ein Thema eröffnet oder bei alten Beiträgen nachgefragt. Ich bin auch oft auf mich alleine gestellt, weiterzukommen. In anderen Foren läuft es ebenso. Mittlerweile sehe ich es hier als "meine" Datenbank, die ich nicht auch noch pflegen muß. Hier kann ich nachlesen, was ich einst wie gelöst habe oder noch erledigen will. Ich bin ein Freund von einfachen Kochrezepten. Vor meiner PLE-Zeit habe ich diese zuerst im Gleitz-Forum gefunden und jetzt sehe ich sie auch hier gerne: RS232-Grundlage/Horch was kommt von draußen rein, ..

Ganz nebenbei: Ich möchte auch mit der DLL-Erstellung anfangen, hast Du ein paar Tips fürn Anfang für mich? Ich habe noch ein paar Uralt-Compiler für Pascal für Windows und einen für Delphi. Muß ich jetzt wieder Basic (C64)/Dev-C++ lernen, um eine DLL zu erstellen? Ich habe gehört, daß es ein freies Visual Studio mit C# bei MS zum download gibt.

Grüße

Mike D
Beiträge: 528
Registriert: Dienstag 14. Oktober 2008, 14:48
Wohnort: Elbe- Weser-Dreieck

Re: Konfiguration einer DLL (FHZ 1300) mit Setup Dialog

Beitrag von Mike D » Dienstag 19. Oktober 2010, 15:06

Vielleicht ist diese Frage auch so speziell, dass keiner da ist der sie mal eben so beantworten kann?

compander
Beiträge: 657
Registriert: Dienstag 14. Oktober 2008, 17:06
Wohnort: Markt Schwaben

Re: Konfiguration einer DLL (FHZ 1300) mit Setup Dialog

Beitrag von compander » Dienstag 19. Oktober 2010, 19:08

Hallo weisskarsten.

Ich sehe das Ganze recht unverkrampft.
Ganz allgemein:

Es gibt Themen, die interessieren mich. Da mache ich gerne mit.
Es gibt Themen, die interessieren mich nicht. Oder ich habe keine "Ahnung". Oder ich habe einfach nicht die Hardware, um das Problem nachvollziehen zu können.

Warum Du in deinem letzten Beitrag Wörter wie: "heisse Luft", oder "Selbstdarstellung" gewählt hast, bleibt mir auch weiterhin unverständlich. Dies ist in diesem Forum nicht üblich.
Und warum Du mit Selbstverständlichkeit erwartest, dass dein spezielles Problem von Mitgliedern gelöst werden muss!

Verstehe ich dieses Forum doch so, dass hier Hilfestellungen/Tips/Beispiele/allgemeine Lösungsansätze präsentiert werden.
Gedankenaustausch halt........ Nicht unbedingt fertige Lösungen.

Hoffe, wir sind hier d’accord.

Gruß vom C :shock: mpander.

abacom
Site Admin
Beiträge: 3917
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: Konfiguration einer DLL (FHZ 1300) mit Setup Dialog

Beitrag von abacom » Mittwoch 20. Oktober 2010, 10:42

"Wie kann ich einen Dialog in dieser oder jener Programmiersprache erstellen."
Naturlich kann man Glück haben und auch hier Hilfe bekommen. Aber wie wahrscheinlich ist das?
Man sollte sich dabei eher an Foren halten, in denen sich die Spezialisten tummeln.
Foren gibt es zu jeder Programmiersprache. Und die Programmierung eines Dialoges ist eindeutig
eine Programmieraufgabe, die mit ProfiLab eher wenig zu tun hat. Kein Grund beleidigt zu sein.
ABACOM support

Antworten

Zurück zu „DLL-Programmierung“