mikrocontroller.net

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


Autor: fifi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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.



Autor: Jens Ziegler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: fifi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Hinweise.

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

Grüße

fifi

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.