Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit Async Pro (https://www.delphipraxis.net/62646-problem-mit-async-pro.html)

perle 7. Feb 2006 15:45


Problem mit Async Pro
 
Hallo, ich habe folgendes Problem.

Wir haben eine Alarmanlage, die Ihre Logdaten (wer hat wann wo nen Alarm ausgelöst, Tür geöffnet etc) über die Serielle Schnittstelle an einen Drucker verschickt. Statt des Druckers möchte ich nun einen PC dort anschließen, die Daten einlesen und in einer Datenbank speichern. Dazu nutze ich die Komponente Async Pro....

Im Grunde funktioniert es auch ganz gut, d.h. es kommen Daten an, die auch ausgelesen werden können......

Bei vielen Daten schnellt aber die Systemauslastung nach oben und das Programm hängt sich auf. Hat jemand Erfahrung damit oder weiss sonst vielleicht woran das liegen könnte?

das Event sieht etwa so bei mir aus :

Delphi-Quellcode:
procedure TForm1.ApdComPortTriggerAvail(CP: TObject; Count: Word);
var
  i : integer;
  chr : char;
begin
  for i := 1 to count do
  begin
    chr := ApdComPort.GetChar;
    memo.Text := memo.Text + chr;
  end;
end;
Ich hatte schon vermutet, dass das Memo vielleicht nicht mit dem schreiben "hinterherkommt" ?

Grolle 7. Feb 2006 15:59

Re: Problem mit Async Pro
 
Hi!
Bei mir klappt der Empfang von der Com einwandfrei so:
Delphi-Quellcode:
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var
  I : Word;
  C : Char;
  S : String;
begin
  S := '';
  for I := 1 to Count do
    begin
      C := ApdComPort1.GetChar;
      S := S + C;
    end;
  Memo1.SelText := (s);
end;
Probleme mit der Geschwindigkeit hatte ich damit noch nie. Wie viele Zeichen kommen
denn da über die Com an?

Viele Grüße...

perle 9. Feb 2006 08:57

Re: Problem mit Async Pro
 
hallo,

schonmal ne gute idee erst den string zusammenzufügen und erst dann ins memo zu schreiben.

Wieviele Zeichen genau ankommen kann ich nicht sagen (hab ja nicht gezählt) :)

es kommen aber auch viele unleserliche zeichen an, bis das memo etwa halb voll ist, dann steigt nur noch die Prozessorlast , bis 100%.

Surrounder 9. Feb 2006 09:54

Re: Problem mit Async Pro
 
hmm also ich mach das immer direkt war noch nie ein Problem

Delphi-Quellcode:

   for i := 0 to Count - 1 do begin
      memo1.Text := memo1.Text + com1.GetChar;
   end;
Ich nehme aber auch oft das AdTerminal dem kann man direkt selber sagen dass es einfach alles was über den AdComPort kommt dann anzeigen soll

Grolle 9. Feb 2006 11:26

Re: Problem mit Async Pro
 
@ perle

Hast du schonmal getestet die Zeichen temporär in eine Datei zu schreiben?
Geht der Prozessor da genauso in die Knie?

Viele Grüße....

runger 9. Feb 2006 12:01

Re: Problem mit Async Pro
 
Hallo,

1.) ist doch logisch, dass du diese Spitzen bekommst, wenn du mit getchar einliest.
Bei jedem Zeichen wird die Prozedur aufgerufen. Kommen viele Zeichen wird die Prozedur oft aufgerufen.
2.) getchar funktioniert ab und zu nicht richtig. Steht bei sourceforge in der Fehlerliste!

Nimm:
port1.GetBlock(u,count);

u ist der String in den du die Zeichen haben willst und count ist die Anzahl der Zeichen, die gelesen wurden.
Funktioniert bei mir einwandfrei.

Rainer

perle 9. Feb 2006 13:00

Re: Problem mit Async Pro
 
danke, ich werde das gleich mal probieren


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 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