Hallo Leute, ich bin am verzweifeln. Ich lese mit einem µC int Werte ein. Ein int Wert entspricht einer bestimmten Zeit. Also konkret: 0 entspricht 0.0s 1 entspricht 0.1s 2 entspricht 0.2s usw. Wie kann ich die int Werte jetzt entsprechend umwandeln, so dass ich sie am Ende als char ausgeben kann? Die Ausgabefunktion verlangt als Datentyp char. Vielen Dank für die super Hilfe hier! Viele Grüße,
Christoph A. schrieb: > Hallo Leute, > > ich bin am verzweifeln. > > Ich lese mit einem µC int Werte ein. Ein int Wert entspricht einer > bestimmten Zeit. > > Also konkret: > > 0 entspricht 0.0s > 1 entspricht 0.1s > 2 entspricht 0.2s usw. > > Wie kann ich die int Werte jetzt entsprechend umwandeln, so dass ich sie > am Ende als char ausgeben kann? itoa würde zb gehen. > Die Ausgabefunktion verlangt als > Datentyp char. Du wirst schon erst mal eine Ausgabefunktion brauchen, die Strings ausgeben kann. http://www.mikrocontroller.net/articles/FAQ#Wie_kann_ich_Zahlen_auf_LCD.2FUART_ausgeben.3F
>Ich lese mit einem µC int Werte ein. Ein int Wert entspricht einer >bestimmten Zeit. Wieso int? Zeit kann ja wohl kaum negativ werden;)
Karl Heinz Buchegger schrieb: > Du wirst schon erst mal eine Ausgabefunktion brauchen, die Strings > ausgeben kann. Ok, ich habe gerade nachgesehen. Ein String kann ich auch eingeben. Z.B. "test". Das wird aber als char eingelesen und in er Funktion dann in einen String umgewandelt. Nur wie bekomme ich jetzt 0.5 in die "__" Anführungszeichen?
Christoph A. schrieb: > Karl Heinz Buchegger schrieb: >> Du wirst schon erst mal eine Ausgabefunktion brauchen, die Strings >> ausgeben kann. > > Ok, ich habe gerade nachgesehen. Ein String kann ich auch eingeben. Z.B. > "test". Das wird aber als char eingelesen Nö. Nicht als char. Als String. > und in er Funktion dann in > einen String umgewandelt. Nur wie bekomme ich jetzt 0.5 in die "__" > Anführungszeichen? ? Was jetzt. Trennen wir erst mal die Dinge. Eingabe Ausgabe Bei welchem Problem stehst du?
Christoph A. schrieb: > Nur wie bekomme ich jetzt 0.5 in die "__" > Anführungszeichen? Mit der Funktion itoa für int bzw. utoa für unsigned int. Steht doch im oben geposteten Link. Vorher musst Du Deinen Wert natürlich in Vorkomma- und Nachkommastellen zerlegen. Das ist aber Mathematik und hat eigentlich nichts mit C zu tun. Dann musst Du Deine Ausgaberoutine 3mal aufrufen. Zuerst die Vorkommastellen ausgeben, dann das Dezimaltrennzeichen und dann die Nachkommastellen.
Also das ist die Funktion bzw. der Funktionsaufruf:
void LCD_Print(const char* Text, unsigned char X, unsigned char Y,
unsigned char FontNr, unsigned char XScale, unsigned char YScale,
unsigned int ForeColor, unsigned int BackColor)
{...};
Ich hatte gehofft pro Wert (zb 0.3) die Funktion nur einmal aufrufen zu
müssen.
Karl Heinz Buchegger schrieb:
> Was jetzt.
>
> Trennen wir erst mal die Dinge.
> Eingabe
> Ausgabe
>
> Bei welchem Problem stehst du?
Das Problem habe ich doch oben beschrieben. Ich bekomme in den µC
unsigned int Werte (0, 1, 2, 3, ... , ). Jeder dieser Werte entspricht
eine Zeiteinheit in 0.1s Schritten. Also:
0 -> 0
1 -> 0.1
2 -> 0.2
.
.
. usw.
Nun habe ich versucht einfach per Definition jedem int Wert einen
entsprechenden String "0.3" zuzuweisen. Hat irgendwie nicht geklappt.
Dann wollte ich einfach den eingelesenen Wert erst in eine
Gleitkommazahl umwandeln und diese dann durch 10 teilen. Den neuen Wert
dann ausgeben. Aber wie?
>Dann wollte ich einfach den eingelesenen Wert erst in eine >Gleitkommazahl umwandeln und diese dann durch 10 teilen. Den neuen Wert >dann ausgeben. Aber wie? printf("Wert: %d.%d\n", wert/10, wert%10);
holger schrieb: > printf("Wert: %d.%d\n", wert/10, wert%10); Hallo Holger. Die Funktion kann ich leider nicht gebrauchen. Der Wert muss hier rein: void LCD_Print(const char* Text, unsigned char X, unsigned char Y, unsigned char FontNr, unsigned char XScale, unsigned char YScale, unsigned int ForeColor, unsigned int BackColor) {...};
>>Dann wollte ich einfach den eingelesenen Wert erst in eine >>Gleitkommazahl umwandeln und diese dann durch 10 teilen. Den neuen Wert >>dann ausgeben. Aber wie? > >printf("Wert: %d.%d\n", wert/10, wert%10); Ach Blödsinn du hast da ne andere Ausgabe: char buffer[9]; snprintf(buffer, sizeof(buffer), "%d.%d\n", wert/10, wert%10); LCD_Print(buffer,...
holger schrieb: > char buffer[9]; > snprintf(buffer, sizeof(buffer), "%d.%d\n", wert/10, wert%10); > LCD_Print(buffer,... Das mit dem char Array hatte ich auch schon probiert. Aber ich wollte dann einfach das Array irgendwie ausgeben, ohne es vorher umzuwandeln. Aber deine Funktion sieht gut aus. Die werde ich gleich morgen testen. Vielen Dank!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.