ASCI zeichen werden am Hyperterminal angezeigt

Gast #535918
Lesenswert?
• ▲
▼
Hallo
Immer wenn ich zum PC hin Daten sende dann zeigt dieser mir nur die ASCI 
zeichen an.

Ich will aber die Werte der Bytes in Zahlen anzeigen lassen.
1
unsigned char Tasterstellung = 3;
2
char buffer[32];
3
itoa( Tasterstellung , buffer, 10);
4

5
uart_putc((unsigned char)buffer );

funktioniert das nicht so? wenn ich statt die 32 etwas anderes rein 
schreibe dann empfange ich andere zeichen.
#535926
Lesenswert?
• ▲
▼
Zeroeightfifteen wrote:
> Hallo
> Immer wenn ich zum PC hin Daten sende dann zeigt dieser mir nur die ASCI
> zeichen an.
>
> Ich will aber die Werte der Bytes in Zahlen anzeigen lassen.
>
>
1
> unsigned char Tasterstellung = 3;
2
> char buffer[32];
3
> itoa( Tasterstellung , buffer, 10);
4
> 
5
> uart_putc((unsigned char)buffer );
>
> funktioniert das nicht so?

Doch.

Aber der cast hätte dich stutzig machen sollen.
Die Funktion uart_putc erwartet ein einzelnes
Zeichen, also einen einzelnen char.
Du hast aber keinen einzelnen char, du hast ein Array
davon und in diesem Array ist ein String gespeichert.
Das weis aber uart_putc nicht. Aber die Funktion uart_puts()
weis das und behandelt den String auch entsprechend.

Falls du keine Funktion uart_puts hast, kannst du ganz
leicht selbst eine bauen:
1
void uart_puts( char* Buffer )
2
{
3
  while( *Buffer )
4
    uart_putc( *Buffer++ );
5
}

uart_puts geht den String Zeichen für Zeichen durch und
schickt jedes einzelne Zeichen über uart_putc weg. Beendet
wird diese Schleife, sobald uart_puts auf ein '\0' Zeichen
trifft, dass in C das Stringende markiert.

Obiges ist die Experten Version. Eine entschärfte Newbie-Version
würde so aussehen:
1
void uart_puts( char* Buffer )
2
{
3
  char c;
4
  int i = 0;
5

6
  c = Buffer[i];
7
  while( c != '\0' ) {
8
    uart_putc( c );
9
    i++;
10
    c = Buffer[i];
11
  }
12
}
#535939
Lesenswert?
• ▲
▼
Zeroeightfifteen wrote:
> so eine uart_puts routine habe ich schon.
> wenn ich aber
1
uart_puts((unsigned char)buffer );
 schreibe, dann
> bekomme ich dies "øÞÞÞ" am PC ausgegeben.

Sagte ich nicht, dass dich der cast hätte stutzig machen sollen.

Lass ihn weg!
Du brauchst ihn nicht und in diesem konkreten Fall ist er auch
noch grundfalsch!

Ein cast ist eine Waffe und man sollte genau wissen was man
tut und vor allen Dingen warum man es tut.
1
  uart_puts(buffer );

  

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.