ASCII Tabelle anzeigen in C
-
So schreibst du eine '0' (als Zahlenwert 48). du willst doch aber 0 haben
Gibt es kein uart_putc() ?
-
Hi, also wenn ich eine NULL übertragen möchte, convertiere ich diese nach ascii '\0'. Am empfänger soll dieses ascii Zeichen '\0' wieder zu NULL werden.
So war das gedacht, z.b. wenn ich eine 49 in String schreibe, brauche ich 2bytes, wenn ich es aber nach ascii konvertiere, brauche ich nur eine 1 zu übertragen, welche auch 1byte groß ist.Ja, uart_putc hab ich auch.
Gruß
-
snoopy9134 schrieb:
if(rxbuf[i]=='\0') uart_puts("0");
Das '\0' hat den Zahlenwert 0
Das "0" hat die Zahlenwerte 48 (die Ziffer 0) und 0 (als Stringende '\0')
uart_puts sollte alle Zeichen bis zur '\0' übertragen. -> Das '\0' wird nicht übertragen.-> Du musst eine Schleife über die Anzahl der Daten machen und jedes Zeichen mit uart_putc übertragen.
Du musst auch unterscheiden zwischen 1, '1', "1". Das sind alles Unterschiedliche Sachen.
65, 'A' sind nach ASCII gleichwertig, ist aber etwas anderes als "65".
-
Ach noch was:
NULL ist noch etwas anderes.
NULL wird für ungültige Zeiger verwendet, und soll einen Wert haben auf den niemals ein Zeiger zeigen kann.
Bei deinem Problem ist es aber fehl am Platze.#define NULL ((void*)0)
-
for (i=0; i<rx_cnt; i++) // Daten weiterleiten { if(rxbuf[i]=='\0') uart_puts("0"); else { sprintf(hallo_string,"%d",rxbuf[i]);//ascii to int uart_puts(hallo_string); } }
hier, ich hätte dazu schreiben sollen, dass ich die Anzahl der Daten kenne, d.h. wenn rx_cnt==30, dann sollen alle '\0' die bis zur dreißigsten Stelle vorkommen, als NULL dargestellt werden. Das letzte Zeichen wird dann auch als '\0', Stringende erkannt.
Gurß
-
Du machst genau das Gegenteil von dem was du beschreibst.
Du machst aus dem Wert 49 (1 Byte) den String "49" (2Byte)
snoopy9134 schrieb:
for (i=0; i<rx_cnt; i++) // Daten weiterleiten { if(rxbuf[i]=='\0') // Hier wird mit dem Wert 0 verglichen uart_puts("0"); // Hier wird der Wert 48 übertragen else { sprintf(hallo_string,"%d",rxbuf[i]); // int to ascii :warning: uart_puts(hallo_string); } }
"123\0ABC\0" gibt dann "49505106566670" 1 2 3 \A B C \ 0 0
Darum:
for (i=0; i<rx_cnt; i++) // Daten weiterleiten { uart_putc(rxbuf[i]); }
Hast du dir schonmal hallo_string angesehen?