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 | }
|