Forum: Compiler & IDEs Empfang über serielle Schnittstelle (allgemein)


von fifi (Gast)


Lesenswert?

Hallo zusammen,

wie empfängt denn ein Controller ein Datenwort vom RS232-Port?

Also, ich sende über eine Software ein Wort raus (->RS232), z.b. "TEST"

Im Controller will ich das auswerten, was ich gesendet habe, also
 if "test" then usw.

Liest der Controller nun das Komplette Wort oder werden nur die 
einzelnen Zeichen nacheinander eingelesen, also "T" dann "E" "S" "T".

Wenn ja, dann muss ich doch sowas wie Variable = variable+neues Zeichen 
einlesen, um wieder aus das Wort "Test" zu kommen.

Ungeachtet dem Syntax, der keiner Sprache angehört, ist mein 
Gedankengang richtig ??

Danke im voraus

fifi

von Karl heinz B. (kbucheg)


Lesenswert?

Zweiteres:
> oder werden nur die einzelnen Zeichen nacheinander eingelesen, also "T"
> dann "E" "S" "T".

Dein Controller weiss nichts von 'Wörtern'. Woher soller denn wissen,
das nach dem 2. ten 'T' nichts mehr kommt?

> Wenn ja, dann muss ich doch sowas wie Variable = variable+neues Zeichen
> einlesen, um wieder aus das Wort "Test" zu kommen.

Ganz genau.



von Jens Ziegler (Gast)


Lesenswert?

Grundsätzlich ist der Datentransport zeichenorientiert (putchar bzw. 
getchar) bzw. zeichenkettenorientiert (puts bzw. gets). Zeichenketten 
sind dabei durch ein String-Endezeichen (gewöhnlich '\0') abgeschlossen. 
gets nutzt also wiederholt getc, bis das String-Endezeichen auftritt. 
Mit den Funktionen scanf und printf kann man den String noch 
formatieren. In jedem Fall bekommt man einen Pointer auf den String 
zurück.

-if "test" then usw.-

Da es sich um Strings handelt, musst du die entsprechenden Funktionen 
aus der <string.h> Bibliothek nutzen hier z.B.

signed char strcmpf(char *str1, char flash *str2)

von fifi (Gast)


Lesenswert?

Vielen Dank für die Hinweise.

Ich werd mich mal an die Hardware machen und dann später melden ;o)

Grüße

fifi

von Karl heinz B. (kbucheg)


Lesenswert?

Und vergiss die Funktion gets() gleich wieder. fgets() ist
die Funktion die du willst. Ist zwar mühsamer aber sicherer.

@Jens
gets() darfst du nur erwähnen, wenn du gleichzeitig 3 Kreuze
schlägst und im selben Atemzug Verdammnis all jenen androhst,
die diese Funktion einsetzen.

gets() hat einen schweren Designfehler! Unzählige Programmabstürze
und erfolgreiche Hacker-Angriffe gehen auf sein Konto. Immer mit
fgets() arbeiten, auch wenn es zunächst mühsamer ist.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.