|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 1:39 am
Кирилица в HI-TECH C PRO PIC18 V9.63PL1
| Автор |
Съобщение |
|
thegza
Ранг: Минаващ
Регистриран на: Нед Авг 17, 2008 10:16 am Мнения: 58 Местоположение: София
|
 Кирилица в 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;
Така нещата стават, на терминала излиза кирилица, чудо и приказ....въпроса е ,че това не е решение.............някой измислил ли е някакво по-добро?
П.П. Ще помоля Никола Киров да се въздържи от удоволствието да спами, че такъв проблем с някой от неговите системи няма как да стане, и че това е поредният ПИК за мигане на ламби 
_________________ RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);
|
| Сря Мар 11, 2009 2:11 am |
|
 |
|
thegza
Ранг: Минаващ
Регистриран на: Нед Авг 17, 2008 10:16 am Мнения: 58 Местоположение: София
|
2 минути по-късно си реших проблема, благодарение на тази тема http://forum.htsoft.com/all/showflat.ph ... age/1/vc/1 , хитро решение, сам да преценяваш дали да е грешка, дали предупреждение.
Преценете дали темата да се трие или да седи ако някой се сблъска със същото 
_________________ RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);
|
| Сря Мар 11, 2009 2:19 am |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
това:
би трябвало да работи на всякакви компилатори (дори и за пик  )
предполагам ще се сетиш как да го използващ
вижда ми се тъпа идея да ползваш sprintf само за да копираш стринг (освен ако е за мигалка  ) ... и то само защото не знаеш как да го декларираш !
(предполагам знаеш че sprintf прави обработка на форматиращия стринг ... а това значи време!)
|
| Сря Мар 11, 2009 7:48 am |
|
 |
|
thegza
Ранг: Минаващ
Регистриран на: Нед Авг 17, 2008 10:16 am Мнения: 58 Местоположение: София
|
Кой е споменавал sprintf? Става дума за използване на стрингове като аргументи.Но и със sprintf, щеше да стане същото.Въпросът ми ама въобще не е за С .
_________________ RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);
|
| Сря Мар 11, 2009 8:01 am |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
щом казваш 
|
| Сря Мар 11, 2009 8:38 am |
|
 |
|
thegza
Ранг: Минаващ
Регистриран на: Нед Авг 17, 2008 10:16 am Мнения: 58 Местоположение: София
|
Човек става дума за константни низове като аргументи на някаква функция, например :
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, а затова как компилаторът третира .С файлът.
Поздрави.
_________________ RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);
|
| Сря Мар 11, 2009 10:31 am |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
уф ...
това е цитат от линка дето си го дал (решението дето ти харесало  ):
понеже типичния пикофон би ползвал 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, ...} - печелиш 
|
| Сря Мар 11, 2009 11:37 am |
|
 |
|
thegza
Ранг: Минаващ
Регистриран на: Нед Авг 17, 2008 10:16 am Мнения: 58 Местоположение: София
|
ЧЕТИ!!!В въпросната тема е написано как грешката да бъде направена на предупреждение и да се компилира  Явно не си ме разбрал
_________________ RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);
|
| Сря Мар 11, 2009 11:44 am |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
и ... в следващата версия на любимия ти компилатор като махнат тая "екстра" - какво ще правиш ... пак ще пускаш нова тема ?
научи се да си решаваш проблемите а не да ги замазваш !
|
| Сря Мар 11, 2009 12:00 pm |
|
 |
|
шопов
Ранг: Минаващ
Регистриран на: Сря Май 17, 2006 4:22 pm Мнения: 34 Местоположение: софия
|
\x е стандартна C escape последователност за символни константи
|
| Сря Мар 11, 2009 12:19 pm |
|
 |
|
thegza
Ранг: Минаващ
Регистриран на: Нед Авг 17, 2008 10:16 am Мнения: 58 Местоположение: София
|
@ps66 .... Хората пишат, че този ерор ще го направят на уорнинг, за в бъдеще отново ЧЕТИ!!!!!...А и по-скоро това, което ти предлагаш е замазване, абе,без коментар просто.....
_________________ RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);
|
| Сря Мар 11, 2009 12:30 pm |
|
 |
|
ps66
Ранг: Форумен бог
Регистриран на: Пет Яну 19, 2007 9:16 am Мнения: 1063 Местоположение: путинофили: "иди н***й"
|
пикоборец такъв - точно на това ти казвам "замазване на проблема" - щото от "error" го правиш на "warning" с опции на компилатора вместо да си решиш проблема така че да не се появи !
утре ще излезе нова версия, ще преинсталираш компилатора ... или там каквото един пикоборец прави
... и пак ще пуснеш тема
за това дали \x е стандарт или не - нито ме интересува нито вълнува ... още по-малко спори 
|
| Сря Мар 11, 2009 1:35 pm |
|
 |
|
thegza
Ранг: Минаващ
Регистриран на: Нед Авг 17, 2008 10:16 am Мнения: 58 Местоположение: София
|
Като не те интересува, що пишеш в темата..... поне с ANSI C да беше запознат... ](./images/smilies/eusa_wall.gif) ...
_________________ RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);
|
| Сря Мар 11, 2009 1:43 pm |
|
 |
|
¶
Ранг: Форумен бог
Регистриран на: Пет Фев 25, 2005 1:58 pm Мнения: 4585 Местоположение: US
|
Мда, за поребен път пикофобите осират темите. Може би трябва да се направи една тема със заглавие "Пикофоби, моля дрискайте тук колкото Ви душа сака..." , че да се омажат до ушите, ама надали ще мирясат 
_________________ Ето аз дишам, работя, живея и програми пиша тъй както умея, с проца под вежди се гледаме строго и боря се с него доколкото мога....
|
| Сря Мар 11, 2009 4:27 pm |
|
 |
|
thegza
Ранг: Минаващ
Регистриран на: Нед Авг 17, 2008 10:16 am Мнения: 58 Местоположение: София
|
_________________ RadtoDecart (HowRot/2,HowOpen/7.5, &TheZone.Dots[TheZone.CurrentDot].X, &TheZone.Dots[TheZone.CurrentDot++].Y);
|
| Сря Мар 11, 2009 6:17 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|