Микроконтролери и електроника
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 ]
Заглавие: 

това:
Код:
const char b[] = {0xf5, 0xcf, 0xca, 0 };

би трябвало да работи на всякакви компилатори (дори и за пик :))
предполагам ще се сетиш как да го използващ :)

вижда ми се тъпа идея да ползваш 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 :) или какво имаш предвид.Въпросът ме не е за ANSI C, а затова как компилаторът третира .С файлът.
Поздрави.

Автор:  ps66 [ Сря Мар 11, 2009 11:37 am ]
Заглавие: 

уф ...

това е цитат от линка дето си го дал (решението дето ти харесало :) ):
Код:
sprintf(lcdstring, "\xD0\xA1\xD0\xBE\xD1\x84\xD1\x82");


понеже типичния пикофон би ползвал 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 ]
Заглавие: 

thegza написа:
ЧЕТИ!!!В въпросната тема е написано как грешката да бъде направена на предупреждение и да се компилира :) Явно не си ме разбрал


и ... в следващата версия на любимия ти компилатор като махнат тая "екстра" - какво ще правиш ... пак ще пускаш нова тема ?

научи се да си решаваш проблемите а не да ги замазваш !

Автор:  шопов [ Сря Мар 11, 2009 12:19 pm ]
Заглавие: 

ps66 написа:
"\x" не е стандартен префикс ... т.е. може да не се поддържа от всички компилатори


\x е стандартна C escape последователност за символни константи

Автор:  thegza [ Сря Мар 11, 2009 12:30 pm ]
Заглавие: 

@ps66 .... Хората пишат, че този ерор ще го направят на уорнинг, за в бъдеще отново ЧЕТИ!!!!!...А и по-скоро това, което ти предлагаш е замазване, абе,без коментар просто.....

Автор:  ps66 [ Сря Мар 11, 2009 1:35 pm ]
Заглавие: 

thegza написа:
@ps66 .... Хората пишат, че този ерор ще го направят на уорнинг, за в бъдеще отново ЧЕТИ!!!!!...А и по-скоро това, което ти предлагаш е замазване, абе,без коментар просто.....


пикоборец такъв - точно на това ти казвам "замазване на проблема" - щото от "error" го правиш на "warning" с опции на компилатора вместо да си решиш проблема така че да не се появи !
утре ще излезе нова версия, ще преинсталираш компилатора ... или там каквото един пикоборец прави :)

... и пак ще пуснеш тема :)

за това дали \x е стандарт или не - нито ме интересува нито вълнува ... още по-малко спори :)

Автор:  thegza [ Сря Мар 11, 2009 1:43 pm ]
Заглавие: 

Като не те интересува, що пишеш в темата..... поне с ANSI C да беше запознат... ](*,) ](*,) ](*,) ...

Автор:  [ Сря Мар 11, 2009 4:27 pm ]
Заглавие: 

Мда, за поребен път пикофобите осират темите. Може би трябва да се направи една тема със заглавие "Пикофоби, моля дрискайте тук колкото Ви душа сака..." , че да се омажат до ушите, ама надали ще мирясат :)

Автор:  thegza [ Сря Мар 11, 2009 6:17 pm ]
Заглавие: 

¶ написа:
Мда, за поребен път пикофобите осират темите. Може би трябва да се направи една тема със заглавие "Пикофоби, моля дрискайте тук колкото Ви душа сака..." , че да се омажат до ушите, ама надали ще мирясат :)

=D> =D> =D> може цял домейн да им регнем, phpBB да качим и да си пишат :)Както един приятел казва на жена си : "В новата къща ще ти насипя пясък в един ъгъл, да си съскате с приятелки " :P

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/