Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
-
ERIK518
- Příspěvky: 2
- Registrován: 05 pro 2019, 09:10
- Reputation: 0
Příspěvek
od ERIK518 » 05 pro 2019, 09:15
Dobrý deň, chcel by som sa opýtať, že mám vytvorenú komunikáciu medzi arduinom a displejom Nextion, len mám problém so znakmi keď tam chcem poslať. Všetky data sa odošlú v pohode, ale znak stupne celzia tam robí blbosti. Vedel by mi niekto poradiť, že v čom môže byť chyba ? Namiesto napr. "20°C" mi tam vypíše "20Ä°C".
Vopred ďakujem za odpovede.
Kód: Vybrat vše
int h = dht.readHumidity(); // Zistíme do int hodnotu vlhkosti
int t = dht.readTemperature(); // Zistíme do int hodnotu teploty
/*Serial.println(t);
Serial.println(h);*/
String teplota = "teplota.txt=\""; // Vytvoríme String pre príkaz čo pošleme do Nextion display
teplota += t; // pridáme k stringu aj hodnotu
teplota += "°C\"";// ukončíme príkaz a príkaz je kompletný
String vlhkost = "vlhkost.txt=\""; // Vytvoríme String pre príkaz čo pošleme do Nextion display
vlhkost += h;// pridáme k stringu aj hodnotu
vlhkost += "%\"";// ukončíme príkaz a príkaz je kompletný
Serial1.print(teplota); // Pošleme príkaz do Nextion
Serial1.write(0xff); // toto musí byť za každým príkazom inač by to nefungovalo
Serial1.write(0xff);// toto musí byť za každým príkazom inač by to nefungovalo
Serial1.write(0xff); // toto musí byť za každým príkazom inač by to nefungovalo
Serial1.print(vlhkost); // Pošleme príkaz do Nextion
Serial1.write(0xff);// toto musí byť za každým príkazom inač by to nefungovalo
Serial1.write(0xff);// toto musí byť za každým príkazom inač by to nefungovalo
Serial1.write(0xff);// toto musí byť za každým príkazom inač by to nefungovalo
delay(1000);// Počkáme 1s
-
gilhad
- Příspěvky: 786
- Registrován: 07 bře 2018, 11:22
- Reputation: 0
Příspěvek
od gilhad » 05 pro 2019, 11:38
Podivne dvojznaky (z nichz prvni pripomina A), u ne-ASCII znaku u me vetsinou znamenaly, ze neco nekde vysilalo v UTF-8 a neco nekde prijimalo v nejakem 8bitovem kodovani.
Nech si vypsat ten retezec teplota byte po bytu, jako hexa a jako znak a jesstli mezi 20 a C budes mit ty byty dva, tak je to jasne. Bud nastavit prijemce, aby pouzival UTF-8, nebo (kdyz ti umi zobrazit ten stupen), tak mu tam posilat jen ten znak pro stupen.
-
ERIK518
- Příspěvky: 2
- Registrován: 05 pro 2019, 09:10
- Reputation: 0
Příspěvek
od ERIK518 » 05 pro 2019, 11:52
Ďakujem za radu. Mám to už vyriešené.
Kód: Vybrat vše
String teplota = "teplota.txt=\""; // Vytvoríme String pre príkaz čo pošleme do Nextion display
teplota += t; // pridáme k stringu aj hodnotu
teplota += char(176);
teplota += "C\"";// ukončíme príkaz a príkaz je kompletný
Takto mi to funguje parádne
ale aj tak ďakujem moc za odpoveď.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů