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
 
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
 


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 12:45 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