ESP32 BLE špatné zobrazení hodnoty
Napsal: 10 čer 2022, 10:05
Ahoj, programuji 2 ks ESP32 v Arduino IDE a komunikaci mezi nimi. Prakticky vše funguje dle návodu v tomto odkazu:
https://randomnerdtutorials.com/esp32-b ... er-client/
Problém mám v případě kde na serveru upravím kód a chci mít hodnoty pouze na jedno desetinné místo tedy třeba u vlhkosti:
static char humidityTemp[6];
dtostrf(hum, 6, 1, humidityTemp);
-problém zde je že mi na displeji posune zobrazení o jedno místo doprava. Ok tedy zadám aby příkaz dtostrf řadil z leva tedy:
static char humidityTemp[6];
dtostrf(hum, -6, 1, humidityTemp);
popř. ideální případ:
static char humidityTemp[4];
dtostrf(hum, -4, 1, humidityTemp); // -4 nebo 4 mělo by to fungovat stejně
-bohužel v tu chvíli je zobrazení na svém místě ale za hodnotou se na displeji který je připojen na klienta objeví znak "?". To samé když hodnoty pole měním na menší atd., zkoušel jsem snad všechny kombinace příkazu dtostrf ale vždy otazník na konci jen když dám ty první hodnoty je to v pořádku ale posunuté doprava o znak. Kontroloval jsem v mobilu pomocí sceneru co mi z toho leze za hodnoty a úplně v pořádku Value: (0x) 36-34-2-34, "64,4" tedy přesně to co potřebuji. Ale na straně klienta je po překladu na konci otazník. Jediná změna oproti programu odkazu je výměna knihovny pro displej za u8g2.lib. Nenapadá někdo kde se tam ten otazník bere?
Vypadá to jako by na straně klienta očekával prostě 2 desetinná místa a když nedostane hodnotu hodí tam otazník ale v kodu klienta nic takového nevidím.
Zde podrobnosti o příkazu dtostrf:
https://www.programmingelectronics.com/dtostrf/
Díky za rady
https://randomnerdtutorials.com/esp32-b ... er-client/
Problém mám v případě kde na serveru upravím kód a chci mít hodnoty pouze na jedno desetinné místo tedy třeba u vlhkosti:
static char humidityTemp[6];
dtostrf(hum, 6, 1, humidityTemp);
-problém zde je že mi na displeji posune zobrazení o jedno místo doprava. Ok tedy zadám aby příkaz dtostrf řadil z leva tedy:
static char humidityTemp[6];
dtostrf(hum, -6, 1, humidityTemp);
popř. ideální případ:
static char humidityTemp[4];
dtostrf(hum, -4, 1, humidityTemp); // -4 nebo 4 mělo by to fungovat stejně
-bohužel v tu chvíli je zobrazení na svém místě ale za hodnotou se na displeji který je připojen na klienta objeví znak "?". To samé když hodnoty pole měním na menší atd., zkoušel jsem snad všechny kombinace příkazu dtostrf ale vždy otazník na konci jen když dám ty první hodnoty je to v pořádku ale posunuté doprava o znak. Kontroloval jsem v mobilu pomocí sceneru co mi z toho leze za hodnoty a úplně v pořádku Value: (0x) 36-34-2-34, "64,4" tedy přesně to co potřebuji. Ale na straně klienta je po překladu na konci otazník. Jediná změna oproti programu odkazu je výměna knihovny pro displej za u8g2.lib. Nenapadá někdo kde se tam ten otazník bere?
Vypadá to jako by na straně klienta očekával prostě 2 desetinná místa a když nedostane hodnotu hodí tam otazník ale v kodu klienta nic takového nevidím.
Zde podrobnosti o příkazu dtostrf:
https://www.programmingelectronics.com/dtostrf/
Díky za rady