AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit Async Pro

Offene Frage von "perle"
Ein Thema von perle · begonnen am 7. Feb 2006 · letzter Beitrag vom 9. Feb 2006
Antwort Antwort
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem mit Async Pro

  Alt 7. Feb 2006, 15:45
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" ?
(17:05:33) ( deccer ) duuu keine ahnung vonski?
(17:05:46) ( deccer ) duuuu ober dörticode schreibsorinski?
(17:06:02) ( deccer ) bist doch schlimmor wie uall :F
>> brechi : Livecracking is shice, da sieht man immer die Fehler <<
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Problem mit Async Pro

  Alt 7. Feb 2006, 15:59
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...

  Mit Zitat antworten Zitat
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Problem mit Async Pro

  Alt 9. Feb 2006, 08:57
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%.
(17:05:33) ( deccer ) duuu keine ahnung vonski?
(17:05:46) ( deccer ) duuuu ober dörticode schreibsorinski?
(17:06:02) ( deccer ) bist doch schlimmor wie uall :F
>> brechi : Livecracking is shice, da sieht man immer die Fehler <<
  Mit Zitat antworten Zitat
Benutzerbild von Surrounder
Surrounder

Registriert seit: 26. Sep 2003
Ort: Stuttgart
177 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Problem mit Async Pro

  Alt 9. Feb 2006, 09:54
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
In C geschrieben und schön war zuletzt Franz Schuberts 9. Symphonie
  Mit Zitat antworten Zitat
Grolle

Registriert seit: 5. Nov 2004
Ort: Coesfeld
1.268 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Problem mit Async Pro

  Alt 9. Feb 2006, 11:26
@ 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....

  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#6

Re: Problem mit Async Pro

  Alt 9. Feb 2006, 12:01
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
  Mit Zitat antworten Zitat
perle

Registriert seit: 8. Apr 2004
183 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Problem mit Async Pro

  Alt 9. Feb 2006, 13:00
danke, ich werde das gleich mal probieren
(17:05:33) ( deccer ) duuu keine ahnung vonski?
(17:05:46) ( deccer ) duuuu ober dörticode schreibsorinski?
(17:06:02) ( deccer ) bist doch schlimmor wie uall :F
>> brechi : Livecracking is shice, da sieht man immer die Fehler <<
  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 18:55 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