|
Строковые и символьные типы в AVR С |
|
|
|
Mar 5 2006, 13:31
|
Гуру
     
Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164

|
Работаю с индикатором LCD через ImageCraft Вот две функции: Цитата void LcdChr ( LcdFontSize size, byte ch ) { byte i, c; byte b1, b2; int tmpIdx;
if ( LcdCacheIdx < LoWaterMark ) { // Update low marker. LoWaterMark = LcdCacheIdx; }
if ( (ch < 0x20) || (ch > 0x7b) ) { // Convert to a printable character. ch = 92; }
if ( size == FONT_1X ) { for ( i = 0; i < 5; i++ ) { LcdCache[LcdCacheIdx++] = FontLookup[ch - 32][i] << 1; } } else if ( size == FONT_2X ) { tmpIdx = LcdCacheIdx - 84;
if ( tmpIdx < LoWaterMark ) { LoWaterMark = tmpIdx; }
if ( tmpIdx < 0 ) return;
for ( i = 0; i < 5; i++ ) { c = FontLookup[ch - 32][i] << 1; b1 = (c & 0x01) * 3; b1 |= (c & 0x02) * 6; b1 |= (c & 0x04) * 12; b1 |= (c & 0x08) * 24;
c >>= 4; b2 = (c & 0x01) * 3; b2 |= (c & 0x02) * 6; b2 |= (c & 0x04) * 12; b2 |= (c & 0x08) * 24;
LcdCache[tmpIdx++] = b1; LcdCache[tmpIdx++] = b1; LcdCache[tmpIdx + 82] = b2; LcdCache[tmpIdx + 83] = b2; }
// Update x cursor position. LcdCacheIdx += 11; }
if ( LcdCacheIdx > HiWaterMark ) { // Update high marker. HiWaterMark = LcdCacheIdx; }
// Horizontal gap between characters. LcdCache[LcdCacheIdx++] = 0x00; }
/*--------------------------------------------------------------------------------------------------
Name : LcdStr
Description : Displays a character at current cursor location and increment cursor location according to font size.
Argument(s) : size -> Font size. See enum. dataPtr -> Pointer to null terminated ASCII string to display.
Return value : None.
--------------------------------------------------------------------------------------------------*/ void LcdStr ( LcdFontSize size, byte *dataPtr ) { while ( *dataPtr ) { LcdChr( size, *dataPtr++ ); } } ЧТо-то не получается у меня... LcdStr(1,"hello"); LcdChr(1,'f'); не выводит ничего, LcdChr(1,"f"); - выдает ошибку found "pointer to char" expected "unsigned char" Что делать?
|
|
|
|
|
 |
Ответов
|
Mar 6 2006, 21:21
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(zheka @ Mar 6 2006, 23:10)  А первая ваша ссылка на язык С - что-то я не вижу там ничего связанного с AVR. И вы мне это рекомендуете после того, как я (новичок) 3 час переделывал проект, заточенный под ImageCraft, в CodeVision. Понимаете, есть отдельно C и есть отдельно AVR. Вы зашли в тематический форум AVR, который посвящается по больше части особенностям AVR, а не особенностям языка C. "Отдельно мухи, отдельно котлеты", а вы пытаетесь совместить сразу и то и то, от того получается такое громадное количество вопросов, вплоть до совсем не подходящих к тематике конференции: Цитата И как вообще организовать массив из строк? Вам же будет проще разобраться в ваших вопросах, если вы разделите вашу задачу изучения AVR+C, на две отдельные задачи - изучение C и изучение AVR. Получится конечно несколько дольше, но зато точно качественнее. Цитата Интересно, вам лень ответить на мой вопрос? Наверное вы сами не знаете на него ответ. мне не лень, иначе бы я не тратил свое время на общение с Вами. Просто предыдущие посты мне подсказывают, что это не будет Вашим последним вопросом, т.к. имеют место пробелы в азах. Цитата Знаете, бегло просмотрел последнюю ссылку в течении 30 секунд - раз 5 наткнылся на мысль, что отвлекать от темы на мелочи и пустяки вредно. Так вот не отвлекайте. Все-таки прочитайте, оно полезно будет
|
|
|
|
Сообщений в этой теме
zheka Строковые и символьные типы в AVR С Mar 5 2006, 13:31 beer_warrior ЦитатаLcdStr(1,"hello"); LcdChr(1,'f... Mar 5 2006, 14:00 zheka Коллега! Честное слово, обижаете. Конечно увер... Mar 5 2006, 14:13 beer_warrior Библиотечка достточно объемная и без знания индика... Mar 5 2006, 14:46 zheka Хм.. разобрался я с буквами. Проблема свелась толь... Mar 5 2006, 15:58 vet Просто строка "abcdef" в данном случае ... Mar 5 2006, 16:21 zheka ЦитатаПоменяйте тип принимаемого параметра на byte... Mar 5 2006, 17:09 zheka Ну что-то я совсем запутался с типами....
Надо мн... Mar 6 2006, 15:40 vet Ну так по передаваемому в функцию адресу лежит чис... Mar 6 2006, 16:14 zheka Я привел текст функции LcdStr.
Вызываю я ее так :... Mar 6 2006, 17:25 Old1 Цитата(zheka @ Mar 6 2006, 21:25) Я приве... Mar 6 2006, 19:24 zheka И как вообще организовать массив из строк? Mar 6 2006, 18:38 zheka __flash byte mystring[]="abcde"; для это... Mar 6 2006, 19:53 defunct Когда появляется сразу сильно много тупых вопросов... Mar 6 2006, 20:44 zheka defunct, знаете, в С для AVR я ноль.
В некоторых д... Mar 6 2006, 20:53 defunct Цитата(zheka @ Mar 6 2006, 22:53) defunct... Mar 6 2006, 21:02 dxp Цитата(zheka @ Mar 7 2006, 03:10) А перва... Mar 7 2006, 05:15 WHALE Блин,да открой ты хелп к кодвижину,там безумно под... Mar 7 2006, 11:25 freux Золотые слова, dxp.
Подтверждаю, вот недавно обкат... Mar 7 2006, 11:26 zheka Умные тут все. Судя по постам даже не вчитывались ... Mar 7 2006, 18:22 defunct Цитата(zheka @ Mar 7 2006, 20:22)
zheka,... Mar 7 2006, 18:52 zheka Ладно, замяли. Я сам разобрался и ладно.
Продолжим... Mar 7 2006, 19:17 WHALE не знаю,кодвижн у меня нормально передает русские ... Mar 7 2006, 19:30 zheka Ну у меня теперь тоже нормально передает - разобра... Mar 8 2006, 08:22 WHALE zheka Я еще раз насчет строковых констант-имхо,ты ... Mar 8 2006, 18:19 zheka Я работаю с индикатором от Nokia 3310 (контроллер... Mar 8 2006, 18:30 kv_addr Что касается фонта, то есть такая простенькая утил... Mar 9 2006, 01:54 zheka RE: Строковые и символьные типы в AVR С Mar 13 2006, 16:57 defunct Цитата(zheka @ Mar 13 2006, 18:57)
LcdC... Mar 13 2006, 20:23 beer_warrior Сядь и спокойно подумай - как производяться эти де... Mar 13 2006, 18:57 zheka ЦитатаИ ты предполагаешь, что компилятор сам найде... Mar 13 2006, 19:46 beer_warrior Увы и ах, я тоже подпишусь под постом dxp.
Есть яз... Mar 13 2006, 20:01 zheka Ну вот:
flash unsigned char f[]="123456... Mar 14 2006, 18:23 vet Куда показывает ptr_to_ram ? Mar 14 2006, 18:44 beer_warrior Тут непонимание системного уровня.
1.Делаем буфер ... Mar 14 2006, 19:38 zheka Цитата1.Делаем буфер в RAM
unsigned char r[16];
... Mar 14 2006, 21:43 freux [quote name='zheka' date='Mar 15 2006,... Mar 15 2006, 09:31 WHALE vet же сказал,у тебя *ptr_to_ram не инициализирова... Mar 15 2006, 06:05 defunct 2 zheka.
Вы так и не ответили на мой вопрос. Отде... Mar 15 2006, 07:08 zheka Ладно, господа профессионалы, высочайшего класса.
... Mar 15 2006, 16:47 defunct Цитата(zheka @ Mar 15 2006, 18:47) Но не ... Mar 15 2006, 17:06  Petka Цитата(defunct @ Mar 15 2006, 20:06) ...
... Mar 16 2006, 07:33   defunct Цитата(Petka @ Mar 16 2006, 09:33) Цитата... Mar 16 2006, 18:15    Petka Цитата(defunct @ Mar 16 2006, 21:15) Цита... Mar 17 2006, 07:13     defunct Цитата(Petka @ Mar 17 2006, 09:13) Забавн... Mar 17 2006, 20:55 vet Цитата(zheka @ Mar 15 2006, 19:47) Ладно,... Mar 15 2006, 18:03 WHALE >>Но не все же хранить во флеше, что-то гене... Mar 15 2006, 17:43 zheka ЦитатаIMHO выгоднее написать 2 отдельные функции:
... Mar 15 2006, 17:50 defunct Цитата(zheka @ Mar 15 2006, 19:50) Ну? 1 ... Mar 15 2006, 21:20 WHALE Действительно,твой пример работать не будет-явная ... Mar 15 2006, 19:23 zheka Итак господа, продолжаем расследование.
Смеялись в... Mar 16 2006, 14:44 beer_warrior А куда указывает указатель s?
ПС если есть желан... Mar 16 2006, 15:46 zheka На строку s. В строку s копируется в данном случа... Mar 16 2006, 16:15 vet zheka
А ругаться не надо. Внимательно прочтите мой... Mar 16 2006, 16:32 beer_warrior char *s - это не строка, это указатель на строку.Э... Mar 16 2006, 16:51 beer_warrior Вдогонку,
совершенно непонятно зачем нужен sprint... Mar 16 2006, 17:05 zheka ЦитатаА ругаться не надо. Внимательно прочтите мой... Mar 16 2006, 17:33 zheka И strcpy тоже работает.
И все же, объясните, в че... Mar 16 2006, 17:45 WHALE zheka Разницы нету-это две возможные формы в CodeV... Mar 16 2006, 18:07 beer_warrior А вот это же детали конкретного компилятора.
char*... Mar 16 2006, 18:13
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|