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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren