Gast
#524030
gibt es eine andere Möglichkeit außer mit
1 | |
einen interger-Wert in einen ASCII-Char umzuwandeln (bräuchte dies für die UART-Kommunikation von Rechner zu µC)
|
Anzeige
|
int in ASCII Zeichen umwandeln
Gast
#524030
gibt es eine andere Möglichkeit außer mit
einen interger-Wert in einen ASCII-Char umzuwandeln (bräuchte dies für die UART-Kommunikation von Rechner zu µC)
Gast
#524038
Ja, gibt es. Schau doch einfach mal in die stdlib.h. Da stehen Funktionen wie itoa, ltoa...
Gast
#524042
itoa hab ich schon probiert, da bekomm ich nur wirre Zeichen zurück bräucht im Prinzip irgend eine Fkt. welche mir aus uint8_t ein char macht z.B. aus 65-->A
Gast
#524076
sorry, meinte natürlich
Gast
#524077
in geordneter reihenfolge?
Gast
#524080
da
zu speicherintensiv sein soll, wollt ich ne Fkt. welche das evtl. besser erledigt bei dem Beispiel sollte "A" in string stehen Nein. Das kann ich nicht glauben. (Fassung bewahren) Probiere doch mal folgendes aus:
Und?
Gast
#524089
hast recht, es funktioniert habs jetzt so gemacht:
hatte "s" vorher als normalen char deklariert, wenn ich aber den ASCII zahlenwert übergebe und die "Ende-NULL" anfüge klapt alles wunderbar Dank!! Warum so umständlich? Wenn Du nur ein Zeichen speichern willst, musst Du keinen String verwenden:
Gast
#524097
is schon klar, aber ich will sowieso nicht nur ein zeichen vom rechner empfangen, sondern mach da noch ne schleife bis /n kommt, halt bis ENTER gedrückt wird da muss ich die einzelnen char doch auch in einem buffer string erst mal zusammenfassen (mein problem lag eigentlich in der uart_puts, die sendet den übergebenen string bis /n und bei nem char sucht die sich halt tot) Deine uart_puts mag bis \n senden, eigentlich aber sollte sie bis zum Stringende senden, so wie es jede andere puts-Implementierung auch tut. Und das Stringende wird durch \0 gekennzeichnet.
Gast
#524112
hast recht, hab jetzt
Sieh Dir mal das #define von NULL an ... das ist nicht ganz sauber, NULL als Stringterminator anzunehmen. Knapper:
Gast
#524144
moment, ich hatte es ganz am anfang so ähnlich
also lags doch nicht daran??? jetzt fange ich langsam an zu zweifeln
Gast
#524155
ok, jetzt sollte ich wohl mal den ganzen code posten:
Gast
#524173
warum klappt uart_putc( c ); aber uart_puts( c ); nicht?????
Gast
#524184
weil c nur ein Zeichen ist und kein string (d.h. ein _array_von chars) ist. just for fun: mach mal "uart_puts(&c)" ;-) dann siehst du, dass Arrays als Pointer übergeben werden und dass strings in C "\0" terminiert sind
Gast
#524188
Weil c ein einzelner Character ist und uart_puts einen Zeiger auf einen String mit Nullterminator erwartet! Wenn Du die Funktionen doch selbst geschrieben hast, dann solltest Du auch wissen, welche Parameter sie haben. Steht doch wirklich alles in Deinem geposteten Code!
Gast
#524197
bin trotzdem von ausgegangen, dass er damit klar kommt obwohl das "ende zeichen" beim char fehlt hätt ja sein könn, dass der compiler merkt, dass das nur ein char is, wenns denn schon so definiert wurde (es kommt ja nicht mal ne warnung) und dass er weiss, dass die länge halt nur 1 ist beim feld is es ja klar, da wird halt immer auf NULL (bzw. \0)geprüft
Gast
#526337
Schau mal auf https://goascii.de nach
Gast
#526338
Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|