реклама на сайте
подробности

 
 
> Запутался с указателями и строками в CodeVision
Зверюга
сообщение Jan 31 2008, 14:09
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



Есть библиотечка под CodeVision - для LCD от Siemens.
Там есть функции

Код
u08 buffer[1][4];

void ram_to_lcd(u08 x,u08 y,unsigned char*str,u08 font,u08 rot, ui16 color)
{  
    u08 i=0;
    while (*str !='\0')
  {
    put_char(x+i*CHAR_W,y,*str++,rot,font,color);  // 0 deg. rotated
    i++;
    x++;
  }

}
//******************************************************вывод строка из ram******************************
void lcd_str_ram(u08 x,u08 y,ui16 var, u08 font,u08 rot,ui16 color)
{
  sprintf(buffer ,"%-i",var);
  ram_to_lcd(x,y,buffer,rot,font,color);

}


Автор библиотеки (один из посетителей этого форума) делает так:

Код
      int variable;

void main()
{
       variable=200;
       lcd_str_ram(65,75,variable,f8x14,0,black);

}


У меня же ничего не выводится. Пробовал через sprintf - ничего не выходит.
Слабоват я в указателях - ткните носом.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kuzmi4
сообщение Feb 1 2008, 12:09
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 defunct - стоп:
1) "...Если variable - массив, тогда что variable и &variable равны...."

2) "...Даже без студии - один из вариантов компилиться не будет. Еслим будет - компилятор на свалку. ..."

Всмысле - как это понимать ? Вроде одно противоречит другому.....

На счёт приведения типов - я согласен, и согласен что если вместо &variable подставлю variable - работать не будет...
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 1 2008, 12:19
Сообщение #3


кекс
******

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



Цитата(Kuzmi4 @ Feb 1 2008, 15:09) *
2 defunct - стоп:
1) "...Если variable - массив, тогда что variable и &variable равны...."
2) "...Даже без студии - один из вариантов компилиться не будет. Еслим будет - компилятор на свалку. ..."
Всмысле - как это понимать ? Вроде одно противоречит другому.....

тип будет разным, а значение одинаковое. i.e.:

(char *)p1 = (char *)0x100;
(void *)p2 =(void *)0x100;

(unsigned)p1 == (unsigned)p2

Цитата(Зверюга @ Feb 1 2008, 09:20) *
Господа, вывод на LCD работает. СТроки из flash выводятся без проблем.

Тогда сделать так:
1. Увеличить размер стека - сделать его ~256 - 512 байт (лучше больше) и чем больше тем лучше.
2. временные буферы типа вашего buffer ложить в стеке (внутри функций которые будут печатать) и делать их разумного размера не 4 байта, а напр 64 или 128:

Код
void test(int var)
{
     U8 buffer[128];

     sprintf( buffer, "Var = %d\r\n", var);
     lcd_str_ram( ..., ..., buffer, ..., ...);
}


....
test( 555 );


Память занятая таким буфером будет освобождаться автоматически, на выходе из функции.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Зверюга   Запутался с указателями и строками в CodeVision   Jan 31 2008, 14:09
- - Kuzmi4   2 Зверюга - как то оно на первый взгляд смотрится....   Jan 31 2008, 14:37
- - mrKirill   Код примера точно для CodeVision?   Jan 31 2008, 16:12
- - mdmitry   Цитата(Зверюга @ Jan 31 2008, 17:09) Кодu...   Jan 31 2008, 20:38
- - defunct   ЦитатаУ меня же ничего не выводится. может совсем ...   Jan 31 2008, 21:17
- - bzx   1. Повнимательнее посмотри, что передаёшь в качест...   Jan 31 2008, 21:40
|- - defunct   Цитата(bzx @ Feb 1 2008, 00:40) 2. Абсолю...   Jan 31 2008, 23:14
- - Зверюга   Господа, вывод на LCD работает. СТроки из flash вы...   Feb 1 2008, 06:20
|- - bzx   Сделай так Кодchar variable[32]; ... spri...   Feb 1 2008, 07:53
- - Kuzmi4   2 defunct - под рукой конечно счас нету винавра и ...   Feb 1 2008, 09:13
|- - Сергей Борщ   Цитата(Kuzmi4 @ Feb 1 2008, 11:13) То ест...   Feb 1 2008, 11:10
|- - defunct   Цитата(Kuzmi4 @ Feb 1 2008, 12:13) То ест...   Feb 1 2008, 11:52
- - Зверюга   Цитатаchar variable[32]; ... sprintf ( variable, ...   Feb 1 2008, 10:44
|- - bzx   Цитата(Зверюга @ Feb 1 2008, 13:44) ЧТо-т...   Feb 1 2008, 11:13
- - Kuzmi4   2 defunct - я на счёт (char *)p1 = (char *)0x10...   Feb 1 2008, 12:36
|- - defunct   Цитата(Kuzmi4 @ Feb 1 2008, 15:36) Просто...   Feb 1 2008, 12:47
- - Kuzmi4   2 defunct - ладно, как доберусь к винавру с студие...   Feb 1 2008, 12:56
|- - defunct   Ок, доберетесь - отпишите.   Feb 1 2008, 13:02
- - BelTech   2 зверюга ты вариант от bzx пробовал? у меня вро...   Feb 1 2008, 19:00
- - Kuzmi4   2 defunct - пробовал специально func( buffer ); ...   Feb 1 2008, 22:36
- - Зверюга   BelTech Цитатадавно писал, уже не помню, пока всё ...   Feb 2 2008, 06:15
- - Зверюга   Короче, вот это работает: Цитатаchar flash *str; ...   Feb 2 2008, 16:09
|- - BelTech   зачем нужна функция Lcd_str_ram Я хотел её запихнк...   Feb 2 2008, 16:50
- - Зверюга   BelTech кстати, какова скорость, fps? У меня что-т...   Feb 2 2008, 17:07
- - BelTech   да, закрашенный прямоугольник на глаз долго рисует...   Feb 2 2008, 17:18
- - Зверюга   И вот еще что... у немцев есть библиотека glcd - н...   Feb 2 2008, 17:32
- - BelTech   только что, убирал spi2x , странно, скорость отрис...   Feb 2 2008, 17:49
- - Зверюга   Нет. Ну выложи с иконками.   Feb 2 2008, 18:05
- - BelTech   вот недоделанный проект, может пригодиться.   Feb 2 2008, 18:19
- - Зверюга   все работает, иконки грузятся, спасибо. однако над...   Feb 2 2008, 18:36
- - BelTech   ну так у этих людей и надо спрашивать про fps, мен...   Feb 2 2008, 18:39


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016