AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Plugin-DLL für ein USBLCD soll Daten an Hauptprogramm senden
Thema durchsuchen
Ansicht
Themen-Optionen

Plugin-DLL für ein USBLCD soll Daten an Hauptprogramm senden

Ein Thema von rage2001 · begonnen am 17. Jun 2006 · letzter Beitrag vom 17. Jun 2006
Antwort Antwort
rage2001

Registriert seit: 21. Apr 2004
19 Beiträge
 
#1

Plugin-DLL für ein USBLCD soll Daten an Hauptprogramm senden

  Alt 17. Jun 2006, 20:26
Ich hab eine LCD-Display-Steuerung entwickelt, mit dem man ein Display mit 128 * 64 Pixeln per USB an einem PC anschließen kann und dafür auch eine Software geschrieben. (Wer die ct liest kennt das Projekt ja) Erweiterungen sollten per Plugin-DLLs die Software erweitern, das fuktioniert auch ganz prima. Doch sollen die DLLs selbstständig Daten an das Hauptprogramm schicken. Wie kann man das realisieren und vieleicht noch dabei ein Control mit in die DLL übergeben. Ich habe das probiert in dem ich folgende Zeilen verwendet habe:


Delphi-Quellcode:
var Controller: TrageVC;

Procedure InitDLL(cntrl:Pointer);stdcall;
begin
  Controller:= Pointer^;
end;
Und im Hauptprogramm:

InitDll(Pointer(Controller); Auf diese Art und Weise habe ich gehofft, daß ich von der DLL heraus das Control benutzen könnte. Aber leider gibt es ausser einer ASV nichts brauchbares.
Sicherlich könnte man das mit einer Callback-Routine erledigen, aber alles was hier im Forum darüber gelesen hat mich auch nicht unbeding weiter gebracht.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: DLL soll Daten selbstständig an das Hauptprogramm schick

  Alt 17. Jun 2006, 20:29
Hi,
wegen den Schutzverletzungen: hast du sowohl im Hauptprogramm als auch in der DLL die Unit ShareMem eingebunden? Du brauchst den Speichermanager von Delphi, damit du Pointer-Typen problemlos verwenden kannst.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#3

Re: DLL soll Daten selbstständig an das Hauptprogramm schick

  Alt 17. Jun 2006, 20:32
Da kann ich helfen


Erst der Code für die DLL:
Delphi-Quellcode:
var
  listen: procedure(command: integer; msg: PChar);

begin
  @listen:=derpointer;
  listen(c,args);
end;
Jetzt die Exe:
Delphi-Quellcode:

procedure mylisten(command: integer; msg: PChar);
begin
  // mach was
end;

begin
  derpointer:= @mylisten;
end;
Edit: Mei mir geht es ohne Sharemem
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
andimx

Registriert seit: 14. Apr 2005
Ort: Hohenstein-Ernstthal
67 Beiträge
 
#4

Re: Plugin-DLL für ein USBLCD soll Daten an Hauptprogramm se

  Alt 17. Jun 2006, 20:48
Callback ist das einzige was da wirklich gut wäre.

Mit einer Callback schleife kannst du Compiler unabhängig einbindungen realisieren.

Hier mal ein Beispiel. Deklaration der Callback Schleife:

var MyCallback: procedure(const Param1: Integer; const Param2: WideString); stdcall; Dann die funtion in der DLL:

Delphi-Quellcode:
function AssignCallback(Callback: Pointer): Boolean; stdcall; export;
begin
  Result := Assigned(Callback);
  if (Result) then MyCallback := Callback;
end;
Dann willst du ja irgendwann mal aus deiner DLL daten ans Hauptprogramm schicken:

Delphi-Quellcode:
function ProcRun: Boolean;
var x: Integer; p: WideString;
begin
   x := 100;
   p := 'Test';
   if Assigned(MyCallback) then MyCallback(x, p);
end;
Dynamischer Load und Einbindung ins Hauptprogramm:
Delphi-Quellcode:
var xAssignCallback:function (callback: Pointeger): Boolean; stdcall;
.
.
  @xAssignCallback := GetProcAddress(hDll, 'AssignCallback');
.
.

Hauptprogramm:

procedure OnMyCallback(const Param1: Integer; const Param2: WideString); stdcall;
begin
end;

Procedure FormLoad(Sender: Tobject);
begin
  xAssignCallback(OnMyCallback);
end;
fertig.

gruß
Andi
  Mit Zitat antworten Zitat
rage2001

Registriert seit: 21. Apr 2004
19 Beiträge
 
#5

Re: Plugin-DLL für ein USBLCD soll Daten an Hauptprogramm se

  Alt 17. Jun 2006, 20:56
Hey, Danke an Euch alle schonemal. Da habe ich ja gleich ein paar Lösungsansätze, zumal mir die von andimx glaube ich am allerbesten gefällt. Ich werde das mal ausprobieren und dann melde ich mal Erfolg oder Mißerfolg.
Vielen Dank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz