Einzelnen Beitrag anzeigen

zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#5

Re: ComPort mit Interface-Doku - Dezibelmessgerät - Async Pr

  Alt 27. Mär 2009, 13:44
Hallo Marius,

ich nutze ein anderes Objekt zum Auslesen vom Comport. Dies ist aber kostenpflichtig (TMS Software).

Es könnte sein, dass das Ereignis "TriggerAvail" schon ausgelöst wird, aber noch nicht alle Zeichen da sind. Dann ist aber "Count" schon festgelegt. Entweder Du wartest noch eine kurze Zeit und dann rufst Du die Daten ab oder Du liest die Daten in ein globales Objekt ein und wartest, bis dort 2 oder 3 Zeichen drin sind.
Auf jeden Fall solltest Du "Data2" vorab leer machen.

Probiere dies doch mal mit dem Terminalprogramm aus, was ich letztens erwähnt hatte. Dann siehst Du wirklich, wann die Daten kommen

Delphi-Quellcode:
procedure TfrmMain.pegelTriggerAvail(CP: TObject; Count: Word);
var
  Data: String;
  data2:String;
  d:Char;
  I: Integer;
begin
  { OnTriggerAvail; Read the data }
  for I:= 0 to Count-1 do
  begin
       d:=pegel.GetChar;
       Data2 := Data2 + IntToHex(Word(d),2) + sLineBreak;
       Data := Data + d;
  end;
  parse(Data);
  //memData.lines.Add(data2);
end;

Wenn man die Daten einmal sortiert, dann sieht es doch schon ganz gut aus (siehe unten).
Dies bestärkt meine Vermutung, dass Du immer den Empfangsstring löschen mußt, bevor Du Daten sendest und dann die Daten in ein gloabes Array schreibst. Wie es aussieht, kommt der Event schon, wenn noch nicht alle Daten da sind.
A551
A50C
A51B00
A506024125
A540
A50E
A511
A50D0353
A50C
A51B00
A506024125
A540
A50E
A511
A50D0353
A50C
A51B00
A506024125
A540
A50E
A511
A50D0352
A50C
A51B00
A506024125
A540
A50E
A511
A50D0352
A50B00
A506024125
A519
A502
A50F
Matthias
  Mit Zitat antworten Zitat