Skutečně ve zpracování výpisu chyběl kouske který by ručně doplnil znak "minus" pro rozsah teplot od [ -0.99 degC až 0.00 degC ].
Děkuji za nahlásení chyby, doplnil jsem unit testy.
Protože v SDS je toto (pseudokód reprezentuje jak se to tiskne):
int32_t celaCast;
uint32_t fracCast;
celaCast = temp100[pozice] / 100;
fracCast = temp100[pozice] % 100;
printf("%d.%0.02u, celaCast, fracCast);
Jak lze vidět, funguje to spolehlivě pro všechny hodnoty mimo ten uvedený maličký rozsah.
Proč ? Protože -1 až -99 (celočíselně) děleno 100 je nula. A nule nemůžeme dát znaménko !
Takže pokud z teplotního čidla přišlo např. -0.5degC, což odpovídá hodnotě temp100 = -50 (protože všude to mále v miliDegC), tak se pak nejde divit že to pro takovou hodnotu tu znaménko nevytisklo.
Nový firmware je opraven, hlídá tento stav a znaménko správně dodatečně doplní.
Pozor ať neuděláte stejnou chybu, např. ve svém SDS-C / FULL-C programu, kde budete s temp100 také pracovat.
Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !