Grade nochmal in den Code geschaut und dann kam die Erleuchtung:
Dieser Code ist für die Ausgabe von Komma Zahlen verantwortlich. Eine Komma Zahl verarbeitet OpenTX wie folgendermaßen.
Die Zahl 100 wir nach der ersten Zahl in die Zahlen 1 und 00 zerlegt. Im Code wird dann qr.quot 1 und qr.rem 00. Der Vergleich geht aber auf größer 0 das bedeutet in diesem Fall wird eins meter statt ein meter ausgegeben. Lange Rede kurzer Sinn:
Nun wird wenn die Kommastelle 0 ist noch eine weitere Prüfung gemacht ob qr.quot = 1 ist wenn das so ist dann wird korrekt ausgegeben ein meter und nicht mehr eins meter!
Werde das grade alls Pull Request auf Github stellen dann klappt das mit der nächsten Version!
div_t qr = div(number, 10);
if (qr.rem > 0) {
PUSH_NUMBER_PROMPT(qr.quot);
PUSH_NUMBER_PROMPT(DE_PROMPT_COMMA);
PUSH_NUMBER_PROMPT(qr.rem);
}
else {
PUSH_NUMBER_PROMPT(qr.quot);
}
DE_PUSH_UNIT_PROMPT(unit);
if (qr.rem > 0) {
PUSH_NUMBER_PROMPT(qr.quot);
PUSH_NUMBER_PROMPT(DE_PROMPT_COMMA);
PUSH_NUMBER_PROMPT(qr.rem);
}
else {
PUSH_NUMBER_PROMPT(qr.quot);
}
DE_PUSH_UNIT_PROMPT(unit);
Die Zahl 100 wir nach der ersten Zahl in die Zahlen 1 und 00 zerlegt. Im Code wird dann qr.quot 1 und qr.rem 00. Der Vergleich geht aber auf größer 0 das bedeutet in diesem Fall wird eins meter statt ein meter ausgegeben. Lange Rede kurzer Sinn:
div_t qr = div(number, 10);
if (qr.rem > 0) {
PUSH_NUMBER_PROMPT(qr.quot);
PUSH_NUMBER_PROMPT(DE_PROMPT_COMMA);
PUSH_NUMBER_PROMPT(qr.rem);
}
else {
if (qr.quot == 1) {
PUSH_NUMBER_PROMPT(DE_PROMPT_EIN);
}
else {
PUSH_NUMBER_PROMPT(qr.quot);
}
}
DE_PUSH_UNIT_PROMPT(unit);
if (qr.rem > 0) {
PUSH_NUMBER_PROMPT(qr.quot);
PUSH_NUMBER_PROMPT(DE_PROMPT_COMMA);
PUSH_NUMBER_PROMPT(qr.rem);
}
else {
if (qr.quot == 1) {
PUSH_NUMBER_PROMPT(DE_PROMPT_EIN);
}
else {
PUSH_NUMBER_PROMPT(qr.quot);
}
}
DE_PUSH_UNIT_PROMPT(unit);
Werde das grade alls Pull Request auf Github stellen dann klappt das mit der nächsten Version!