UART und HTerm Anfängerfrage

Gast #3383337
Lesenswert?
• ▲
▼
Hallo!


Ich habe aus dem GCC-Tutorial die UART-Funktionen in meinen ATMEGA16 
implementiert.
1
int main(void)
2
{
3
   // Pufferspeicher ausreichend groß
4
   // evtl. Vorzeichen + width + Endezeichen:
5
   char s[8]; 
6
   float f = -12.345;
7
 
8
   uart_init();
9
 
10
   dtostrf( f, 6, 3, s ); 
11
   uart_puts( s );
12
   // verkürzt: uart_puts( dtostrf( f, 7, 3, s ) );
13
 
14
   while (1) {
15
      ;
16
   }
17
 
18
   return 0; // never reached 
19
}

Funktionert soweit alles perfekt.

Jedoch möchte ich an das Terminalprogramm (HTerm) folgenden String 
übertragen.

z.B -12.345,-12.345

nachdem die 2 double-Werte übertragen wurden, soll HTerm einen CR 
durchführen.

Wie kann ich das im obigen Code umsentzen?

Schon mal vielen Dank im Voraus!

Gruss
#3383358
Lesenswert?
• ▲
▼
hiho schrieb:

> z.B -12.345,-12.345
>
> nachdem die 2 double-Werte übertragen wurden, soll HTerm einen CR
> durchführen.
>
> Wie kann ich das im obigen Code umsentzen?

INdem du das ganz einfach überträgst.
Hinweis: Der Empfänger kann nicht unterscheiden, ob du den Text mit 
einem Aufruf von zb uart_puts auf den Weg bringst, oder mit mehreren. 
Alles was er kriegt sind die Zeichen.
1
 uart_puts( s );
2
 uart_puts( "," );
3
 uart_puts( s );
4
 uart_puts( "\n" );

ist zb eine Möglichkeit. Es gibt noch andere Möglichkeiten, inklusive 
dem Zusammensetzen der Zeile auf der Senderseite. Da das aber mit 
Stringverarbeitung verbunden ist und Stringverarbeitung in C immer 
darunter leidet, dass man im Vorfeld die zu erwartenden maximal 
Stringlänge kennen muss, ist das oftmals gar nicht ratsam. Einfacher ist 
es, die Einzelteile ganz einfach nacheinander auf den Weg zu bringen.

PS: Ob du ein \n schicken musst, oder ein \r\n hängt von der Einstellung 
des Terminalprogramms ab.
Auch hast du wahrscheinlich eine Funktion, die sich besser zum Versand 
von Einzelzeichen eignet, als uart_puts. Um einen einzelnen ',' zu 
versenden wird man dann wohl eher zu dieser Funktion für Einzelzeichen 
greifen, aber zur Not geht es auch mit Stringfunktionen. Das unnötige 
Abarbeiten eines Strings geht immer noch schneller als das eigentliche 
Übertragen mittels UART.

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.