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: Fr 17.02.06 16:36 
Servus Leute,
ich hab ein kleines Problem. Ja ich hab auch schon das Forum durchforstet, aber entweder bin ich nicht helle genug, aber ich habe keine Antwort gefunden.
Also, ich benutze die ComPort-Komponente von Dejan Crnila zur Kommunikation über die serielle Schnittstelle. Komm damit auch soweit ganz gut zurecht. Hab letztens erst einen Roboter gebaut und diesen über PC fern gesteuert über diese Komponente. Aber jetzt hab ich ein Problem.
Ich will Daten einlesen. Es wird soweit ich weis gesendet: STX- Daten- ETX, also STX und ETX sollen darstellen das die Kommunikation startet (STX) bzw. beendet wird (ETX). Ich legen dann die Daten in ein Memofeld. Wenn ich die jetzt einlese, wie ich es gemacht habe, dann steht da z. B.
X

1
2
3

X

1
2
4
5

soll heißen da wird die Distanz angezeigt. Jetzt will ich aber als Ausgabe haben:
X 124

und ich komm nicht drauf wie ich das machen kann. Kann ich irgendwo das einstellen, das die Komponente auf STX und ETX reagiert?
Das Telegramm ist wie folgt:
Baudrate: 1200
Datenbit: 7
Stoppbit: 2
Parity: odd

Mensch, ich würde mich echt freuen, wenn mir da einer weiter helfen kann.

Ich wünsch euch schon allen mal ein schönes Wochenende.
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Fr 17.02.06 17:31 
ich kenne die Komponenten nicht und weiß d.h. nicht ob du die direkt mit dem Memo verbinden kannst oder ob du die Werte von Hand einträgst. Bei letzterem benutz doch einfach eine globale Zählvariable die meinetwegen von 4 runtergezählt wird und dann bei 0 die Werte ins Memo schreibt. Du musst natürlich bei jedem SignalEreignis die Werte erstmal in einem ebenfalls globalen String/Array/... zwischenlagern.
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: Fr 17.02.06 17:55 
Servus digi_c,
danke erst mal für deine Antwort. Also, ich kann die Daten direkt automatisch ins Memo-Feld übergeben. Mein Problem ist es halt, das die Daten nicht immer gleich groß sind, sie können also insgesamt mal 4 Zeichen groß sein, oder aber auch mal 20 Zeichen groß sein und dazwischen die Werte halt auch annehmen.

Mein Problem ist es halt, es gibt ein Startzeichen und Stopzeichen und wie kann ich die verarbeiten?
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: Sa 18.02.06 15:27 
Servus an Alle,
Leute, ich hab glaub ich ein dicken fetten Balken heute vor dem Kopf. Ich weiß einfach nicht, wie ich es hinbekommen soll, das man meine eingehenden Daten abzählt und dann in einem Array abspeichert, so das ich, wenn die Datenübertragung abgeschlossen ist, das Array dann im Memofeld dargestellt wird. Kann mir da einer eventuell mit ein paar Quellcodezeilen auf die Sprünge helfen. Ich bin über jede Antwort sehr dankbar.
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Sa 18.02.06 18:25 
Ich kenne wie gesagt die Komponente nicht und wann welche Ereignisse aufgerufen werden.

Wenn du ein Ereignis hast, das aufgerufen wird sobald du ein Zeichen kriegst was aber nur ein Teil eines Befehls ist musst du das neue Zeichen einem globalem Array hinzufügen. Wenn dann ein Befehlendezeichen kommt kannst du den Befehl aus allen bisherigen Zeichen des Arrays zusammensetzen.

Ansonsten müsstes du das noch ein wenig beschreiben wie du das bisher machst. Wenns nicht all zu viel Code ist kannst du ihn ja mal posten
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: Fr 24.02.06 22:08 
Sorry Leute, das ich mich jetzt erst melde, lag mit ner Grippe tierisch flach. Jetzt sitzte ich wieder vor dem PC. Also, ich hab es jetzt doch geschafft. Mensch, war ganz einfach. Man muss sich erst mal in Ruhe den Datenstrom, der reinkommt, sich anschauen und analysieren auf wiederkehrende Ereignisse. Siehe da, nach jedem Befehl kam ein <CR> als Abschluss. Man ließt den ganzen Datenstrom ein und wenn das <CR> kommt, welches man halt abfragen muss, dann soll ein bestimmtes Ereigniss geschehen. Siehe da, es funktioniert. Man darf halt nicht immer so kompliziert denken, vieles im Leben ist einfacher als man denkt.

Trotzdem vielen Dank für die Hilfe. Ich kann diese Komponente nur weiterempfehlen. Die Einarbeitungszeit ist sehr gering. Die Effektivität ist sehr hoch.