Echtes ende eines UART Strings

Gast #574941
Lesenswert?
• ▲
▼
Hallo,

ich habe eine Frage. Wie ist das ofizielle Ende eines RS232 Strings.
Ich schicke von einem ATMEL meine strings immer so:
void uart0_putc(char c)
   {
   while(!(UCSRA & (1<<UDRE)));
   UDR=c;
   }
void uart0_puts(char *s)
   {
   while (*s)
      {
      uart0_putc(*s);
      s++;
      }
   uart0_putc('\r');
   uart0_putc('\n');
   }
Nur wenn ich das so mache und ich ein Windows Programm schreibe
Erkennt Windows in meinem selbst geschriebenem Programm das Ende des 
Strings nicht. Aber nur in dem selbst geschriebenen Programm.
Beim HyperTerminal funktioniert es einwandfrei.

Sollte man nach einer RS232 Übertragung noch das '\0' Zeichen senden?
Also folgendermaßen:
void uart0_puts(char *s)
   {
   while (*s)
      {
      uart0_putc(*s);
      s++;
      }
   uart0_putc('\r');
   uart0_putc('\n');
   uart0_putc('\0');
}

Weiß jemand eine Antwort?
Gast #574945
Lesenswert?
• ▲
▼
Ein UART kennt keine Strings, ein UART kennt ausser byte gar nichts. 
RS232 kennt auch keine Strings Was Du suchst ist ein Moeglichkeit, dem 
Empfaenger das Ende eines Datentypen klar zu machen. Moeglicherweise ist 
es eine Null, moeglicherweise was anderes. Was macht ser Empfaegner denn 
?
Gast #574951
Lesenswert?
• ▲
▼
Richtig.
Der Empfänger ein PC mit einem Windows Programm macht folgendes:
ReadFile (hCom, &InString, sizeof (InString), &dwRead,NULL);
Damit empfange ich eine String nach in InString.
Nur weiß ich nicht wie groß die Anzahl der Empfangene Bytes gewesen 
sind.
Gut ich weiß es schon da ich mir selber bytes schicke. Aber der 
Datenstrom kann unterschiedlich sein?
Wie kann man das herausfinden.
Gast #574953
Lesenswert?
• ▲
▼
Das hängt einfach nur davon ab, wie du deine Applikation programmierst.
Also was sie erwartet.

Bei einem String gibts das mehrere Möglichkeiten Anfang, Ende, Länge
zu kennzeichnen:

1. Ende mit <CR> oder <CR><LF>
2. Nullterminiert mit <NULL>
3. Verpackt in <STX>MeinString<ETX>
4. Ganz eigenes Protokoll, welches den Datentypen oder die Datenlänge
   vorneweg schickt.
5. und und und

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.