| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Кирилица в HI-TECH C PRO PIC18 V9.63PL1 http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=6625 |
Страница 1 от 2 |
| Автор: | thegza [ Сря Мар 11, 2009 2:11 am ] |
| Заглавие: | Кирилица в HI-TECH C PRO PIC18 V9.63PL1 |
За съжаление ми се наложи да сменя вярната версия 8.20, понеже не ми поддържа новите пик-ове (18f45j10). Компилаторът работи, всичко е прекрасно, но понеже старият вече го няма реших да компилирам някой стар проект, да видя всичко ок ли ще е...Тук идват проблемите.Проектът праща стрингове с кирилица по RS232.Менюто на lcd-то и то е на кирилица.Получава се следната грешка при build - "Error [228] D:\Proekti\Pryskachka VI RDTESTESTED - IE\Pryskachka VI.c; 836.10 illegal character (0xCA)". След малко ровене в Мануел на компилатора се оказва, че в .С файлът можело да има само 7-битови ASCII символи, демек не и кирилица.............ТЪПО.Като сложа да праща латиница всичко работи ок.Не можах да намеря от опциите някакъв начин да спра тази проверка дали символите са 7 битови.Пробвах следното малоумно решение : Пълня стринга ръчно елемент по елемент с ASCII символи, например : a[0]=0xf5; a[1]=0xcf; a[2]=0xca; a[3]=0; Така нещата стават, на терминала излиза кирилица, чудо и приказ....въпроса е ,че това не е решение.............някой измислил ли е някакво по-добро? П.П. Ще помоля Никола Киров да се въздържи от удоволствието да спами, че такъв проблем с някой от неговите системи няма как да стане, и че това е поредният ПИК за мигане на ламби
|
|
| Автор: | thegza [ Сря Мар 11, 2009 2:19 am ] |
| Заглавие: | |
2 минути по-късно си реших проблема, благодарение на тази тема http://forum.htsoft.com/all/showflat.ph ... age/1/vc/1 , хитро решение, сам да преценяваш дали да е грешка, дали предупреждение. Преценете дали темата да се трие или да седи ако някой се сблъска със същото |
|
| Автор: | ps66 [ Сря Мар 11, 2009 7:48 am ] | |||||||||
| Заглавие: | ||||||||||
това:
би трябвало да работи на всякакви компилатори (дори и за пик предполагам ще се сетиш как да го използващ вижда ми се тъпа идея да ползваш sprintf само за да копираш стринг (освен ако е за мигалка (предполагам знаеш че sprintf прави обработка на форматиращия стринг ... а това значи време!) |
||||||||||
| Автор: | thegza [ Сря Мар 11, 2009 8:01 am ] |
| Заглавие: | |
Кой е споменавал sprintf? Става дума за използване на стрингове като аргументи.Но и със sprintf, щеше да стане същото.Въпросът ми ама въобще не е за С . |
|
| Автор: | ps66 [ Сря Мар 11, 2009 8:38 am ] |
| Заглавие: | |
щом казваш |
|
| Автор: | thegza [ Сря Мар 11, 2009 10:31 am ] |
| Заглавие: | |
Човек става дума за константни низове като аргументи на някаква функция, например : LCD_Puts("Пръскачка вер.VI",0); void LCD_Puts(const unsigned char* Str , unsigned char Position); В този случай става дума за временни const-ове, които компилатора си дефинира за да ги подаде на функцията като аргумент.Реално той си дефинира един const char temp[]={'П','р','ъ','с','к','а','ч','к','а',' ','в','е','р','.','V','I',0}; и този temp се подава така - LCD_Puts(temp,0); Покажи ми къде става дума за sprintf Поздрави. |
|
| Автор: | ps66 [ Сря Мар 11, 2009 11:37 am ] | |||||||||
| Заглавие: | ||||||||||
уф ... това е цитат от линка дето си го дал (решението дето ти харесало
понеже типичния пикофон би ползвал copy/paste - предположих че случая е такъв "\x" не е стандартен префикс ... т.е. може да не се поддържа от всички компилатори просто ти дадох най-прoстото решение - и то такова че да работи на всички платформи а не само на ПИК ! пример: const char szPraskachka_ver_VI[] = { ... }; LCD_Puts(szPraskachka_ver_VI,0); ако мислиш че "\xD0\xA1\xD0\xBE\xD1\x84\xD1\x82" е по-прегледно ос {0xD0, 0xA1, ...} - печелиш |
||||||||||
| Автор: | thegza [ Сря Мар 11, 2009 11:44 am ] |
| Заглавие: | |
ЧЕТИ!!!В въпросната тема е написано как грешката да бъде направена на предупреждение и да се компилира |
|
| Автор: | ps66 [ Сря Мар 11, 2009 12:00 pm ] | |||||||||
| Заглавие: | ||||||||||
и ... в следващата версия на любимия ти компилатор като махнат тая "екстра" - какво ще правиш ... пак ще пускаш нова тема ? научи се да си решаваш проблемите а не да ги замазваш ! |
||||||||||
| Автор: | шопов [ Сря Мар 11, 2009 12:19 pm ] | |||||||||
| Заглавие: | ||||||||||
\x е стандартна C escape последователност за символни константи |
||||||||||
| Автор: | thegza [ Сря Мар 11, 2009 12:30 pm ] |
| Заглавие: | |
@ps66 .... Хората пишат, че този ерор ще го направят на уорнинг, за в бъдеще отново ЧЕТИ!!!!!...А и по-скоро това, което ти предлагаш е замазване, абе,без коментар просто..... |
|
| Автор: | ps66 [ Сря Мар 11, 2009 1:35 pm ] | |||||||||
| Заглавие: | ||||||||||
пикоборец такъв - точно на това ти казвам "замазване на проблема" - щото от "error" го правиш на "warning" с опции на компилатора вместо да си решиш проблема така че да не се появи ! утре ще излезе нова версия, ще преинсталираш компилатора ... или там каквото един пикоборец прави ... и пак ще пуснеш тема за това дали \x е стандарт или не - нито ме интересува нито вълнува ... още по-малко спори |
||||||||||
| Автор: | thegza [ Сря Мар 11, 2009 1:43 pm ] |
| Заглавие: | |
Като не те интересува, що пишеш в темата..... поне с ANSI C да беше запознат... ...
|
|
| Автор: | ¶ [ Сря Мар 11, 2009 4:27 pm ] |
| Заглавие: | |
Мда, за поребен път пикофобите осират темите. Може би трябва да се направи една тема със заглавие "Пикофоби, моля дрискайте тук колкото Ви душа сака..." , че да се омажат до ушите, ама надали ще мирясат |
|
| Автор: | thegza [ Сря Мар 11, 2009 6:17 pm ] | |||||||||
| Заглавие: | ||||||||||
може цял домейн да им регнем, phpBB да качим и да си пишат |
||||||||||
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|