![]() |
Re: StringGrid mit Daten füllen und farblich Darstellen
Buffer ist vom Datentyp String
Delphi-Quellcode:
wie die beiden anderen Globalen Var. auch
var
Form1: TForm1; Buffer:String; Zeile :String; DataMB256plus : String; |
Re: StringGrid mit Daten füllen und farblich Darstellen
Achso, der max. Datensatzgröße die aus dem Puffer gelesen werden kann, ist übrigens
1024 Byte |
Re: StringGrid mit Daten füllen und farblich Darstellen
Hallo Jens,
Delphi-Quellcode:
was wird in Count angegeben?
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
Bis bald Chemiker |
Re: StringGrid mit Daten füllen und farblich Darstellen
Count, ist die aktuelle Länge vom momentan vorhandene Puffer der EMA
Wenn ich z.B. folgendes in die Procedure eintrage, frage ich nur ein Zeichen aus dem Puffer ab.
Delphi-Quellcode:
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var Daten : String; begin if Buffer = '' then begin ComPort1.ReadStr(Daten, 1); //So wird ein Zeichen gelesen Buffer:=Buffer+Daten; Bufferverarbeitung; end; end; |
Re: StringGrid mit Daten füllen und farblich Darstellen
Hallo Jens,
ich denke das Count der Buffer von der seriellen Schnittstelle ist. Welchen Wert stellst Du als Puffer für die seriellen Schnittstelle ein? Bis bald Chemiker |
Re: StringGrid mit Daten füllen und farblich Darstellen
In der Komponente ist einen größe von 1024 Byte eingestellt.
Die Var. Buffer ist Global und vom Typ String, und für die Übergabe der Verarbeitung da. Puffer ist keine Var. mit Puffer bezeichne ich nur die momentan in der EMA vorhandenen Daten Dieser Puffer wird beim einlesen von der COM Schnittstelle an die Var. Buffer übergeben. In der Anweisung habe ich nur Count stehen, was auslößt, das immer der komplett vorhandene Puffer gelesen wird |
Re: StringGrid mit Daten füllen und farblich Darstellen
Hallo Jens,
Zitat:
Bei der Datensatz-Verarbeitung hast Du wahrscheinlich immer nach 1024 Byte Schwierigkeiten, weil unter Umständen zum Schluss keine vollständiger Datensatz mehr vorhanden ist. Das bedeutet Du kannst den Buffer nicht einfach löschen, weil schon ein halber Datensatz vorhanden ist und dieser halber Datensatz würde dann mit gelöscht. Es muss also dieser halber Datensatz irgendwie zwischen gespeichert werden und beim Auslösen des Event vor dem neuen Buffer gesetzt werden. Bis bald Chemiker |
Re: StringGrid mit Daten füllen und farblich Darstellen
Liste der Anhänge anzeigen (Anzahl: 2)
Das ist Richtig, aber wenn der Datensatz immer 1024Byte groß ist, wie kann es dann sein das er unterschiedlich lang ist.
Im Anhang, habe ich mal 2 Datensätze abgezeichnet. Es ist z.B. auch so, das beim 1 Datensatz der Count 1024 ist. Wie bekomme ich raus, durch was das Event
Delphi-Quellcode:
gestarte wird.
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
[EDIT] In einem anderen Thread, habe ich das hier gefunden..
Delphi-Quellcode:
Example (inside OnRxChar)
Code: markieren procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); var Str: String; begin ComPort1.ReadStr(Str, Count); Label1.Caption := Str; end; Example (outside OnRxChar)
Delphi-Quellcode:
Code: markieren
var Str: String; begin // set timeouts here or at design time ComPort1.ReadStr(Str, NumberOfBytes); Label1.Caption := Str; end; Sobald was an der Seriellen ankommt, wird die Caption gesetzt. Du brauchst also kein extra Button um es einzuschalten. Jetzt musst DU nur noch einen Weg finden, bei klick auf einen Button, die Cation des Labels nicht mehr geändert werden kann. Das müsste ja, bedeuten, wenn ich meine Ser. Schnittstelle schließe sobald ich den Buffer gelesen habe, und erste nach leerem Buffer wieder öffne, könnte es gehen. |
Re: StringGrid mit Daten füllen und farblich Darstellen
Hallo Jens,
grade beim kleinen Buffer-Inhalt kann man sehr deutlich sehen, worauf ich hinaus will, am Anfang steht ‚ignis:…. . Das was im Anhang ist, ist nicht der Datensatz, sondern der Buffer-Inhalt. Das was Zwischen „Ereignis“ bis Ereignis steht ist das was Du brauchst und was einen Datensatz entspricht. Zitat:
Das sieht bisher für mich so aus, als wenn normalerweise die Events zu einem Drucker geschickt werden, dass ist auch der Grund warum Du mit einem Memo keine Schwierigkeiten hast (solange genügend Speicher für die Daten vorhanden ist). Zu prüfen ist, ob es der EMA möglich ist die gesendeten Daten zu markieren, üblich ist das mit STX (#2) und ETX (#3). STX = Start Text ; ETX = End Text Bis bald Chemiker |
Re: StringGrid mit Daten füllen und farblich Darstellen
Liste der Anhänge anzeigen (Anzahl: 2)
Ich kann in der EMA auch die Funktion DataSafe aktivieren, allerdiings kann ich dann gar keiner Daten lesen.
Was allerdings, dann im Debugmodus zu sehen ist, das da wirklich irgendwas wie #2 und #3 erscheind. Das Problem ist nur, da mein Programm ja flexible bleiben soll, wäre die Drucker Variante schon besser, weil ich mir da sicher bin, das alle unsere Systeme dies können, weil alle einen Druckerport haben. Es gibt leider auch Systeme, da kann man am Drucker gar nichts programmieren, der ist vom Hersteller aus eingestellt und fertig Das Interresante, ist ja auch, ist habe das Programm jetzt mal laufen lassen, ist normaler Betrieb, und die Daten werden nur in kleinen Mengen geliefert, Gibt es keine Problem. (Anhang Datensätze) Das heißt, wenn ein normales Datenaufkommen vorhanden ist, werden alle Datensätze eingetragen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:22 Uhr. |
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