Autor Beitrag
Roboman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 115

WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
BeitragVerfasst: Mi 08.11.06 17:53 
Servus Leute,

ich spiele hier die ganze Zeit mit der ComPort3.0 Komponente und versuche immer eine serielle Schnittstelle mitzulesen. Jipp das klappt auch wunderbar.

Ich lege diese Daten dann in ein Memo-Feld ab, werden schön dargestellt wie sie auch reinkommen. Jetzt ist mein Problem das ich diese Dáten vorweg mit einer Uhrzeit versehen möchte. Mach ich das kommen die Daten nicht sauber ins Memofeld.

eingelesende Daten z. B. X 5000
Wunsch: 20:10:15:155 X 5000

Aber das macht der Schiss nicht. Ich wollte das so machen, die empfangenen Daten stehen in einem String, diesem String wollte ich einen weiteren mit Uhrzeit anhängen, und den gesamten String dann ins Memofeld stellen. Das funzt aber nicht so ganz.

Kann mir da eventuell jemand weiter helfen? Wäre echt super.

ICh wünsch euch einen schöne Abend.
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mi 08.11.06 18:03 
Zeig mal den bisherigen Code zum anhängen

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Roboman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 115

WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
BeitragVerfasst: Mi 08.11.06 19:36 
Hallo Jakob

Hier der angeforderter Quellcode:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TSniffler.ComPort_RxChar(Sender: TObject; Count: Integer);
var
Dat_TCS : String;
begin
//Application.ProcessMessages;
LongTimeFormat:='hh:nn:ss:zzz';
DateTime:=Time; 
Uhrzeit:=TimeToStr(DateTime);

// Daten einlesen
ComPort.ReadStr(strEmpfangeDaten,Count);

// Datenübertragung in die Memofelder
Memo_Daten.Text:=Memo_Daten.Text +strEmpfangeDaten;  
end;

procedure TSniffler.ComPort_RxFlag(Sender: TObject);
begin
Memo_Daten.Lines.Append(Uhrzeit);
end;


Meine momentane Lösung?!?


Daten werden auch sauber eingelesen. Zur Zeit steht dann dort z. B.

"empfangene Daten"
"Uhrzeit"

Und es soll so sein:
"Uhrzeit empfange Daten"

Ich bin über jede Lösung dankbar.

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt
oldmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 380


D3 Prof, D4 Prof
BeitragVerfasst: Do 09.11.06 14:20 
Hi
Nun, es ist klar, du setzt die Zeit in der Leseroutine, liest die Daten ein undschreibst diese in dein Memo. Beim nächsten LeseFlag schreibst du die ( alte ) Zeit in eine Memo-Line, anschließend gehts wie obeb beschrieben weiter. Also, wenn du schon die Zeiterfassung mitschreiben willst, so sollte das Einfügen in deine Memo auch dort passieren, wo du die Zeit setzt.
Das sollte gehen :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TSniffler.ComPort_RxFlag(Sender: TObject);  
begin  
  <span style="color: cyan">Uhrzeit:=FormatDateTime('hh:nn:ss:zzz', Now);  // hier Zeit setzen</span>
  Memo_Daten.Lines.Append(Uhrzeit);  
end;


oder aber

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TSniffler.ComPort_RxChar(Sender: TObject; Count: Integer);  
var  
  Dat_TCS : String;  
begin  
  //Application.ProcessMessages;  
  LongTimeFormat:='hh:nn:ss:zzz';  
  DateTime:=Time;   
  Uhrzeit:=TimeToStr(DateTime);  
  <span style="color: cyan">Memo_Daten.Lines.Append(Uhrzeit);  // hier Zeit einfügen</span>
 
  // Daten einlesen  
  ComPort.ReadStr(strEmpfangeDaten,Count);  

 
  // Datenübertragung in die Memofelder  
  Memo_Daten.Text:=Memo_Daten.Text +strEmpfangeDaten;    
end;


ok, das sollte dir helfen.
Gruß oldmax

_________________
Zier dich nich so, ich krieg dich schon....
Roboman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 115

WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
BeitragVerfasst: Do 09.11.06 20:56 
Servus oldmax,
danke für die Hilfe, werde die morgen schnellstmöglich mal ausprobieren. Habe leider im Moment nicht die Möglichkeit es auszutesten. Werde mich umgehenst melden wie es ausgegangen ist.

Danke nochmals.
Roboman Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 115

WinXP
Delphi 2005 Prof.; Delphi 6 Prof.; C++; C; Basic
BeitragVerfasst: Do 23.11.06 21:57 
Servus Oldmax,
also, hab jetzt deinen Vorschlag getestet. Ich lese in der procedure TSniffler.ComPort_RxChar(Sender: TObject; Count: Integer) jetzt ein und in der procedure TSniffler.ComPort_RxFlag(Sender: TObject) setzte ich die Zeit + Daten zusammen, dann klappts.Vorher muss ich seltsamer Weise das ganze in einem Edit-Feld zwischenspeichern, also die eingelesenen Daten. Ist komisch, nicht nachvollziehbar, aber es funktioniert. Wenn ich wieder dazu komme, werd ich die Sache überarbeiten.

Danke nochmals für die Hilfe.