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

 
 
 
Reply to this topicStart new topic
> Помогите с синтаксисом AVRGCC C++
Sirko
сообщение Dec 9 2010, 18:56
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 245
Регистрация: 15-08-07
Пользователь №: 29 795



Есть желание создать менюшку, но, во-первых, хочется, все,что можно засунуть во флэш, а во-вторых, в меню будут редактироватся значения разных типов. Соответственно, придется бороться либо с шаблонами, либо с виртуализацией.
Ни с одним, ни со вторым у меня со старта не получилось.
Соответственно, прошу знающих помочь мне.
Приведенный ниже код отражает не столько отправную точку, сколько идею создания менюшки.
Хотя, вероятно, это и не лучший способ.

Код
#include <avr/pgmspace.h>

const char string1[] PROGMEM = "someValue1";
const char string2[] PROGMEM = "someValue2";
const char string3[] PROGMEM = "someValue3";
const char string4[] PROGMEM = "someValue4";

const char stringName[] PROGMEM = "someNameMenu";

const char* strings[4] PROGMEM = {string1, string2, string3, string4};

template <class T>
struct ItemValue{
    char* name;
    T valueCurrent;
    T valueDefault;
const PROGMEM    T min;
const PROGMEM    T max;
// const PROGMEM    bool modify : 1;
};

ItemValue <u08>   comeParameter1    = {pgm_read_byte(&(strings[1][])), 100,    0,            200,        100};
ItemValue <float> comeParameter2    = {pgm_read_byte(&(strings[2][])), 3.0F,    -100.0F,    100.0F,    100.0F};
ItemValue <bool>  comeParameter3    = {pgm_read_byte(&(strings[3][])), true,    false,    true,        true};

#define COUNTITEM 3
template <class T>
class MenuItem{
public:
    MenuItem(const char* name, const ItemValue *_items, u08 count) :
        nameMenu(name),
        items(_items),
        countItems(count){}
        void setParameter(T param){items[currentParametr].valueCurrent = param}
        T getParameter(void){return items[currentParametr].valueCurrent;}
private:
    const char *nameMenu;
    const ItemValue *items;
    const u08 countItems;
    u08    currentParametr;
};


MenuItem <u08> menuItem(pgm_read_byte(&(stringName[])),
                                    &{comeParameter1,
                                    comeParameter2,
                                    comeParameter3},
                                    COUNTITEM);



Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Dec 10 2010, 10:57
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Вы поищите, тут есть уже готовые решения меню - проще взять и адаптировать, чем делать с нуля
Go to the top of the page
 
+Quote Post
brunql
сообщение Dec 11 2010, 17:53
Сообщение #3





Группа: Участник
Сообщений: 14
Регистрация: 12-09-10
Из: Krasnodar
Пользователь №: 59 434



Организация древовидного меню
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 11 2010, 18:21
Сообщение #4


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



QUOTE (brunql @ Dec 11 2010, 19:53) *

Далеко не лучшая реализация. На мой взгляд избыточна.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 8th July 2025 - 10:37
Рейтинг@Mail.ru


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