Čeština na Nextion displeji
Čeština na Nextion displeji
Potřebuji poradit s následujícím problémem.
Používám Nextion displej s fonty Consolas ve znakové sadě iso-8859-2. Pokud napíši cokoliv v češtině přímo v Nextion editoru čeština se mi pak zobrazí na displeji správně.
Pokud ale pošlu český text z arduina, čeština se zobrazí špatně. Text posílám procedurou například:
send_text("t3","Ztmíváni a čas ");
void send_text(String componentID, String text) { // odesli text
String txt = componentID + ".txt=\"" + text + "\"";
send_Command(txt.c_str());
}
void send_Command(const char* cmd) { // odeslani dat do displeje
nextion.print(cmd);
nextion.write(0xFF);
nextion.write(0xFF);
nextion.write(0xFF);
nextion.flush();
}
Prosím, poradí mi někdo co s tím?
Používám Nextion displej s fonty Consolas ve znakové sadě iso-8859-2. Pokud napíši cokoliv v češtině přímo v Nextion editoru čeština se mi pak zobrazí na displeji správně.
Pokud ale pošlu český text z arduina, čeština se zobrazí špatně. Text posílám procedurou například:
send_text("t3","Ztmíváni a čas ");
void send_text(String componentID, String text) { // odesli text
String txt = componentID + ".txt=\"" + text + "\"";
send_Command(txt.c_str());
}
void send_Command(const char* cmd) { // odeslani dat do displeje
nextion.print(cmd);
nextion.write(0xFF);
nextion.write(0xFF);
nextion.write(0xFF);
nextion.flush();
}
Prosím, poradí mi někdo co s tím?
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: Čeština na Nextion displeji
A nebude to tím, že iso-8859-2 je Latin 2 a Arduino IDE díky OS W10 jede ve Windows-1250 ?
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: Čeština na Nextion displeji
Asi ano. Ale co mám tedy dělat?
Ale například dlouhé y je v Windows-1250 na pozici 0xFD a ve iso-8859-2 také na pozici 0xFD. Ale na Nextion ý nefunguje. Místo ý je tam přehlasované A", ale spíš to je A s háčkem.
Ale například dlouhé y je v Windows-1250 na pozici 0xFD a ve iso-8859-2 také na pozici 0xFD. Ale na Nextion ý nefunguje. Místo ý je tam přehlasované A", ale spíš to je A s háčkem.
Naposledy upravil(a) LadaKava dne 01 dub 2021, 22:18, celkem upraveno 1 x.
Re: Čeština na Nextion displeji
Můžeš v textu použít řídící sekvenci. Místo znaku dáš například ''\xFD' To způsobí, že se oděšle přesně ta (FD) hexadecimální hodnota. Je to sice pakárna, ale když nic jiného nefunguje, tak alespoň to.
Dává se to přímo do stringu a v jednom stringu jich může být libovolné množství.
https://docs.microsoft.com/cs-cz/cpp/c- ... w=msvc-160
Dává se to přímo do stringu a v jednom stringu jich může být libovolné množství.
https://docs.microsoft.com/cs-cz/cpp/c- ... w=msvc-160
Re: Čeština na Nextion displeji
Děkuji za radu, opravdu to funguje.
Je to však opravdu velká pakárna. Např. pro dvouřádkový nápis "noční proud" musím napsat
send_text("t0","no\xE8n\xED\x5Crproud");
Nefunguje totiž ani "\r"
Kdyby měl někdo elegantnější řešení, tak budu mít radost.
Díky.
Je to však opravdu velká pakárna. Např. pro dvouřádkový nápis "noční proud" musím napsat
send_text("t0","no\xE8n\xED\x5Crproud");
Nefunguje totiž ani "\r"
Kdyby měl někdo elegantnější řešení, tak budu mít radost.
Díky.
Re: Čeština na Nextion displeji
Můžeš si napsat vlastní funkci pro výstup řetězce, která ten řetězec přechroupe a ty znaky co se špatně zobrazí nahradí řídící sekvencí a nakonec ten upravený string pošle. A nebo jen ten řetězec upraví a dál si s ním můžeš pracovat jak budeš potřebovat.
\r je jen jedna hodnota <LF> ale spousta zařízení potřebuje dvě hodnoty <CR><LF> nebo také \r\n
\r je jen jedna hodnota <LF> ale spousta zařízení potřebuje dvě hodnoty <CR><LF> nebo také \r\n
Re: Čeština na Nextion displeji
Díky za radu. Nejsem tak sběhlý v práci s řetězci, stálo by mě to hodně času. Ale snad se k tomu později dostanu.
Re: Čeština na Nextion displeji
Děkuji za radu. Do procedury jsem doplnil substituce:
void send_text(String componentID, String text) { // odesli text
text.replace("č","\xE8");
text.replace("í","\xED");
text.replace("\n","\x5Cr");
text.replace("ý","\xFD");
text.replace("ř","\xF8");
text.replace("á","\xE1");
String txt = componentID + ".txt=\"" + text + "\"";
send_Command(txt.c_str());
}
A teď je program funkční a i přehlednější.
void send_text(String componentID, String text) { // odesli text
text.replace("č","\xE8");
text.replace("í","\xED");
text.replace("\n","\x5Cr");
text.replace("ý","\xFD");
text.replace("ř","\xF8");
text.replace("á","\xE1");
String txt = componentID + ".txt=\"" + text + "\"";
send_Command(txt.c_str());
}
A teď je program funkční a i přehlednější.
Re: Čeština na Nextion displeji
No vida že to šlo
Pakárnu přenechme strojům
Pakárnu přenechme strojům
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 14 hostů