Empfang über serielle Schnittstelle (allgemein)

Gast #423262
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
#423277
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.


Gast #423291
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)
#423347
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.