AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi StringGrid mit Daten füllen und farblich Darstellen
Thema durchsuchen
Ansicht
Themen-Optionen

StringGrid mit Daten füllen und farblich Darstellen

Ein Thema von Jens Hartmann · begonnen am 29. Jan 2009 · letzter Beitrag vom 6. Apr 2009
Antwort Antwort
Seite 7 von 11   « Erste     567 89     Letzte »    
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#61

Re: StringGrid mit Daten füllen und farblich Darstellen

  Alt 27. Feb 2009, 20:45
Buffer ist vom Datentyp String

Delphi-Quellcode:
var
  Form1: TForm1;
  Buffer:String;
  Zeile :String;
  DataMB256plus : String;
wie die beiden anderen Globalen Var. auch
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#62

Re: StringGrid mit Daten füllen und farblich Darstellen

  Alt 27. Feb 2009, 20:52
Achso, der max. Datensatzgröße die aus dem Puffer gelesen werden kann, ist übrigens

1024 Byte
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#63

Re: StringGrid mit Daten füllen und farblich Darstellen

  Alt 27. Feb 2009, 21:40
Hallo Jens,

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); was wird in Count angegeben?

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#64

Re: StringGrid mit Daten füllen und farblich Darstellen

  Alt 27. Feb 2009, 21:51
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;
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#65

Re: StringGrid mit Daten füllen und farblich Darstellen

  Alt 27. Feb 2009, 21:56
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
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#66

Re: StringGrid mit Daten füllen und farblich Darstellen

  Alt 27. Feb 2009, 22:05
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
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#67

Re: StringGrid mit Daten füllen und farblich Darstellen

  Alt 27. Feb 2009, 22:58
Hallo Jens,

Zitat von Jens:
In der Anweisung habe ich nur Count stehen, was auslößt, das immer der komplett vorhandene Puffer gelesen wird
Dieses Event wird ausgelöst, wenn im Puffer von der seriellen Schnittstelle 1024 Byte vorhanden sind, nicht von der EMA, woher soll das die serielle Schnittstelle wissen?

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
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#68

Re: StringGrid mit Daten füllen und farblich Darstellen

  Alt 28. Feb 2009, 09:15
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
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); gestarte wird.

[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.
Miniaturansicht angehängter Grafiken
datensatz_gro__171.gif   datensatz_klein_483.gif  
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#69

Re: StringGrid mit Daten füllen und farblich Darstellen

  Alt 28. Feb 2009, 12:40
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 von Jens:
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.
Das wird wahrscheinlich nicht funktionieren, es sei denn, dass Dein Programm ein Befehl absetzt das es nicht bereit ist und zur EMA schickt.

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
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#70

Re: StringGrid mit Daten füllen und farblich Darstellen

  Alt 28. Feb 2009, 16:13
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.
Miniaturansicht angehängter Grafiken
drucker_111.gif   datens_tze_686.gif  
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 7 von 11   « Erste     567 89     Letzte »    


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 22:06 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