Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Daten von ComPort in Stringliste speichern (https://www.delphipraxis.net/44882-daten-von-comport-stringliste-speichern.html)

Steve 6. Mai 2005 12:47

Re: Daten von ComPort in Stringliste speichern
 
Zitat:

Zitat von Grolle
Hi!
Habt Nachsicht - bin noch Anfänger :mrgreen:

Keine Sorge, das waren alle mal :zwinker:

Zitat:

Zitat von Grolle
Also Count hat bekommt keinen bestimmten Parameter zugewiesen.

Hä? :gruebel:

Mach' doch mal bitte folgendes: Gehe in Deinem Code in die erste Zeile der Methode ApdComPort1TriggerAvail. Drücke F5 - nun sollte die Zeile hervorgehoben sein und links am Zeilenrand ein roter Punkt sein. Wenn Du nun via F9 übersetzt, sollte in dem roten Punkt ein Häkchen sein. (Ansonsten in der nächsten Zeile F5 drücken). Wenn nun der Code ausgeführt wird, also ein OnTriggerAvail ausgelöst wird, springt der Debugger an diesen Haltepunkt. Dann fahre mit der Maus über "count" oder markiere count und drücke Strg+F5. Somit wird Dir angezeigt, welchen Wert count momentan gerade hat -> Und dann teil uns mit, welchen Wert count hier hat :)


Und zum "Zeilenabschluss": ich dachte da an so #13#10 o.ä. ;) muss aber nicht sein...


Gruß
Stephan :dance:

ol1uw 6. Mai 2005 13:24

Re: Daten von ComPort in Stringliste speichern
 
Hallo was kommt denn hier raus

Delphi-Quellcode:
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
  {Event OnTriggerAvail - Example how OnTriggerAvail works} 
var
  I : Word;
  C : Char;
  S : String;
begin
  S := '';
  for I := 1 to Count do begin
    C := ApdComPort1.GetChar;
    case C of
      #0..#31 : {Don't display} ;
      else S := S + C;
    end;
  end;
  ShowMessage('Got an OnTriggerAvail event for: ' + S);
end;
stammt aus den Examples der TurboPower

Gruß Uwe

Grolle 6. Mai 2005 14:39

Re: Daten von ComPort in Stringliste speichern
 
@ steve
count = 1 hat er mir angezeigt und als Zeilenabschluss kommt eigentlich kein #13#10 :gruebel:
@ ol1uw

Aha, da tut sich was. Anzeigen tut ers schonmal.

ol1uw 6. Mai 2005 15:44

Re: Daten von ComPort in Stringliste speichern
 
Villeicht funktioniert dann das hier auch
Delphi-Quellcode:
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
  {Event OnTriggerAvail - Example how OnTriggerAvail works} 
var
  I : Word;
  C : Char;
  S : String;
  List: TStringList;
begin
  List:=TStringList.Create;
  List.LoadFromFile(ExtractFilePath(ParamStr(0))+ 'temp.txt');
  S := '';
  for I := 1 to Count do begin
    C := ApdComPort1.GetChar;
    case C of
      #0..#31 : {Don't display} ;
      else S := S + C;
    end;
  end;
  List.add(s);
  List.SaveToFile(ExtractFilePath(ParamStr(0))+ 'temp.txt');
  List.Free;
end;
oder
Delphi-Quellcode:
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
  {Event OnTriggerAvail - Example how OnTriggerAvail works} 
var
  I : Word;
  C : Char;
  S : String;
  List: TStringList;
begin
  List:=TStringList.Create;
  List.LoadFromFile(ExtractFilePath(ParamStr(0))+ 'temp.txt');
  S := '';
  for I := 1 to Count do begin
    C := ApdComPort1.GetChar;
    case C of
      #0..#31 : {Don't display} ;
      else S := S + C;
    end;
  end;
  List.Text:=List.Text+S;
  List.SaveToFile(ExtractFilePath(ParamStr(0))+ 'temp.txt');
  List.Free;
end;
Gruß Uwe

Grolle 6. Mai 2005 16:53

Re: Daten von ComPort in Stringliste speichern
 
@ ol1uw
Leider nicht. Die Buchstaben werden alle untereinander
in die Liste geschrieben. :(

Steve 9. Mai 2005 07:19

Re: Daten von ComPort in Stringliste speichern
 
Hi,
Zitat:

Zitat von Grolle
@ steve
count = 1 hat er mir angezeigt und als Zeilenabschluss kommt eigentlich kein #13#10 :gruebel:

das sind doch mal gute Nachrichten :mrgreen: Die Schleife geht von 0 bis Count-1, wird für count=1 also genau einmal durchlaufen.
Also bekommst Du via GetChar nur ein Zeichen. Und dieses wird an die Stringliste als eigener Eintrag angehängt. Jeder Eintrag wird als eigene Zeile in die gespeichert, also muss das Ergebnis ja so aussehen! :cyclops:

In meinem Fall war es so, dass die zurückgegebene Zeichenkette mit einem Steuerzeichen abgeschlossen wurde (z.B. #0, oder in meinem Fall eben #13#10), wenn die Antwort des Geräts auf meine Anfrage vollständig bzw. abgeschlossen war. (Daher meine dauernde Nachfrage nach dem String-Abschluss ;) ) Habe dann einfach nen String private deklariert, diesen mit in OnTriggerAvail für i:=0 bis count-1 mit GetChar gefüllt und geprüft, ob die letzten Zeichen #13#10 waren. Wenn nicht, passierte gar nix und im nächsten OnTriggerAvail wurden die nächsten empfangenen Zeichen angehängt. Falls aber doch, war die Übermittlung abgeschlossen und ich konnte meine empfangene Zeichenkette auswerten :)

Gruß
Stephan :dance:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:14 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz