Ich stehe total auf dem Schlauch mit einer Funktion. Ich weiß nicht, wie ich eine Berechnung so durchführe, dass das Ergebnis nicht immer Null ist. Wenn ich newValue nur in eine andere Variable schiebe geht das noch. Aber wenn ich den Wert umrechnen möchte, kommt nur 0 heraus. Mit Sicherheit liegts an mir - ich weiß nur nicht wo...
Geht nicht:
void onFuelQty1000Change(unsigned int newValue) {
unsigned int t = newValue;
t = abs((t/65535)*1000);
display.setCursor(50,10);
display.print(t);
display.display();
}DcsBios::IntegerBuffer fuelQty1000Buffer(0x10d0, 0xffff, 0, onFuelQty1000Change);
Geht:
void onFuelQty100Change(unsigned int newValue) {
unsigned int h = newValue;
display.setCursor(70,10);
display.print(h);
display.display();
Danke Jungs, Ihr öffnet mir die Augen
Ich muss mit allem ein doofes Problem lösen: Auf einer Anzeige muss ich einen Gesamtwert ausgeben, bekomme aber für die Zehntausender, Tausender und Hunderter-Stelle jeweils einen Wert zwischen 0 und 65535 geliefert. Daraus muss ich die Gesamtanzeige zusammenbasteln
Jetzt setze ich mich nochmal hin...
ElEspanol:
Beschreib doch besser mal dein ganzes Problem
Das Problem war mein Kopf. agmü hat erkannt, dass ich meine Division umkehren muss. Mit:
t = abs((t/65535)*1000); kommt immer Null heraus.
Jetzt ist es:
t = ((newValue) * 10UL / 65535)*10000;
Jetzt stimmen auch die Ergebnisse.
Danke Allen die sich meinen Kopf zerbrochen haben
Micha