AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

event in dll! Abfrage in Main?

Ein Thema von hum · begonnen am 11. Jan 2008 · letzter Beitrag vom 11. Jan 2008
Antwort Antwort
hum

Registriert seit: 10. Jan 2008
2 Beiträge
 
#1

event in dll! Abfrage in Main?

  Alt 11. Jan 2008, 06:56
Hallo

Wir verwenden vorgefertigte Funktionen (von APRO) für eine RS232 Kommunikation. Die APRO
Komponenten stellen Funktionen zu Verfügung wie init_com_port(), send_string_via_rs232 und
get_string_via_rs232. Das Problem liegt im Moment bei der get_string Funktion. Man kann
einen Endstring definieren sobald dieser Endstring vom Gerät geschickt wird meldet sich die
funktion get-string_via_rs232. Wenn man die Komponenten direkt in der Main Form verwendet ohne
dll dann erkennt die Main Form den Event und meldet selbständig "string detektiert". Sobald
wir aber die Funktionen in einer dll verwenden ist dieser Event nicht sichtbar.

Etwas Code:
Delphi-Quellcode:
library strings_dll;

uses
  SysUtils, AdPacket, AdPort,Dialogs,Windows, Messages, Variants, Classes, Graphics, Controls,
  Forms, StdCtrls;

type
    Tmyclass = class(TObject)
      procedure GetString(Sender: TObject; robotString: String); // Event
    private
    public
end;

var
  x,y:integer;
  datapacket1: TApdDataPacket;
  COM_port1: TApdComPort;
  myarray: array[0..5] of string;
  test2: array[0..5] of PChar;

{$R *.res}
   
procedure Tmyclass.GetString(Sender: TObject; robotString: String);
begin
  showmessage('Endstring detected');
end;

procedure init(); stdcall;
begin
   datapacket1:=TApdDataPacket.Create(nil); // nill because we dont have a FORM !
   myclass:=Tmyclass.Create;
   COM_port1:=TApdComPort.Create(nil);

   //init COM-port properties & events
    //---------------------------------------------
    COM_port1.Open:=True;
    COM_port1.Baud:=115200;
    COM_port1.CommNotificationLevel:=10;
    COM_port1.DataBits:=8;
    COM_port1.DTR:=True;
    COM_port1.InSize:=4096;
    COM_port1.Logging:=tlOff;
    COM_port1.OutSize:=4096;
    COM_port1.Parity:=pNone;
    COM_port1.StopBits:=1;
    COM_port1.Tracing:=tlOff;

    COM_port1.RTS:=True;
    COM_port1.PromptForPort:=True;
    COM_port1.XOnChar:=#17;
    COM_port1.XOffChar:=#19;
    COM_port1.HWFlowOptions:=[];
    COM_port1.SWFlowOptions:=swfNone;
    COM_port1.Tag:=0;
    COM_port1.AutoOpen:=True;
    COM_port1.BufferFull:=0;
    COM_port1.BufferResume:=0;


    //init all the datapacket properties & events
    //---------------------------------------------

    datapacket1.AutoEnable:=True;
    datapacket1.Enabled:=True;
    datapacket1.StartCond:=scString;
    datapacket1.StartString:='?'; //Works!?
    datapacket1.EndCond:=[ecString];
    datapacket1.EndString:=^M^J; //LF = ^J = #10
    datapacket1.PacketSize:=100;
    datapacket1.TimeOut:=2184; //ca 2 min
    datapacket1.ComPort:=COM_port1; //userdefined com port
    datapacket1.IncludeStrings:=True;
    datapacket1.OnStringPacket:=myclass.GetString; // does not work ???
    
end;

procedure close_t(); stdcall;
begin
    COM_port1.Free;
    myclass.Free;
    datapacket1.Free;
end;


exports
  init, close_t;

begin
end.
Wie detektiert man ob ein Event stattgefunden hat aus einer dll??

Gruss
hum

[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen - Mfg, SirThornberry[/edit]
  Mit Zitat antworten Zitat
11. Jan 2008, 07:00
Dieses Thema wurde von "SirThornberry" von "Sonstige Fragen zu Delphi" nach "Object-Pascal / Delphi-Language" verschoben.
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: event in dll! Abfrage in Main?

  Alt 11. Jan 2008, 07:03
Wird das ShowMessage nicht ausgelöst in der Dll? Und exakt der gleiche Quelltext funktionert außerhalb einer DLL anders?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: event in dll! Abfrage in Main?

  Alt 11. Jan 2008, 07:18
Könnte es sein das AsyncPro *irgendwelche* Fensterhandles benötigt um seine interne Fensterkommunikation zu ermöglichen?

Pack doch Testhalber mal Tmyclass in der DLL auch auf eine Formular welches du anzeigst
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
hum

Registriert seit: 10. Jan 2008
2 Beiträge
 
#5

Re: event in dll! Abfrage in Main?

  Alt 11. Jan 2008, 10:29
Zitat von SirThornberry:
Wird das ShowMessage nicht ausgelöst in der Dll? Und exakt der gleiche Quelltext funktionert außerhalb einer DLL anders?
Die ShowMessage wird in der dll nicht ausgeführt. Folgender Quelltext läuft ohne dll fehlerfrei (aber in einer Form Umgebung):
Delphi-Quellcode:
unit RingBufferRW;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, AdPacket, OoMisc, AdPort;


type
  TForm2 = class(TForm)
    procedure Init(Sender: TObject);
  private
    robotString: String;

    datapacket1: TApdDataPacket;
    COM_port1: TApdComPort;

    procedure GetString(Sender: TObject; robotString: String);
  protected
  public
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

//------------------------------------------------------------------------------
procedure TForm2.Init(Sender: TObject);
begin
       // com and datapacket
end;

procedure TForm2.GetString(Sender: TObject; robotString: String);
begin
    showmessage('Ready (CR) received');
end;

end.

Es scheint schon was damit zu tun zu haben ob eine Form exisitert oder nicht.
Besten Dank für weitere Ideen.

Gruss
hum
  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 03:36 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