Stránka 1 z 1
Čeština na Nextion displeji
Napsal: 01 dub 2021, 19:34
od LadaKava
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?
Re: Čeština na Nextion displeji
Napsal: 01 dub 2021, 21:22
od pavel1tu
A nebude to tím, že iso-8859-2 je Latin 2 a Arduino IDE díky OS W10 jede ve Windows-1250 ?
Re: Čeština na Nextion displeji
Napsal: 01 dub 2021, 22:01
od LadaKava
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.
Re: Čeština na Nextion displeji
Napsal: 02 dub 2021, 07:46
od ondraN
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
Re: Čeština na Nextion displeji
Napsal: 02 dub 2021, 10:17
od LadaKava
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.
Re: Čeština na Nextion displeji
Napsal: 02 dub 2021, 12:38
od ondraN
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
Re: Čeština na Nextion displeji
Napsal: 03 dub 2021, 18:03
od LadaKava
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
Napsal: 04 dub 2021, 10:38
od LadaKava
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ší.
Re: Čeština na Nextion displeji
Napsal: 04 dub 2021, 12:30
od ondraN
No vida že to šlo
Pakárnu přenechme strojům
