Hallo XAro,
Es könnte sonst noch sein, dass es einfach an der Ausgabe liegt.
Ja, der RP6 hat in seinen Libs keine fertige Ausgabefunktion für Gleitkommazahlen.
Hier eine Funktion, die eine float Variable in einen String umwandelt, den man dann mit den RP6-Befehlen ausgeben kann:
Code:
/**
* This function makes a string out of a float value.
* Example:
* float myvar = 11.34;
* char text[6];
* float2string(myvar,2,text); // 2 Dezimalstellen
* writeString(text); // o.ä. z.B. auf das Display
*/
void float2string(float value, int decimal, char* valuestring)
{
int neg = 0;
char tempstr[20];
int i = 0;
int j = 0;
int c;
long int val1, val2;
char* tempstring;
tempstring = valuestring;
if (value < 0) {neg = 1; value = -value;}
for (j=0; j < decimal; j++) {value = value * 10;}
val1 = (value * 2);
val2 = (val1 / 2) + (val1 % 2);
while (val2 !=0) {
if ((decimal > 0) && (i == decimal)) {
tempstr[i] = (char)(0x2E); //0x2E = Punkt
i++;
}
else {
c = (val2 % 10);
tempstr[i] = (char) (c + 0x30); //0x30 = Null
val2 = val2 / 10;
i++;
}
}
if (neg) {
*tempstring = '-';
tempstring++;
}
i--;
for (;i > -1;i--) {
*tempstring = tempstr[i];
tempstring++;
}
*tempstring = '\0';
}
Gruß Dirk
Lesezeichen