Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с синтаксисом AVRGCC C++
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Sirko
Есть желание создать менюшку, но, во-первых, хочется, все,что можно засунуть во флэш, а во-вторых, в меню будут редактироватся значения разных типов. Соответственно, придется бороться либо с шаблонами, либо с виртуализацией.
Ни с одним, ни со вторым у меня со старта не получилось.
Соответственно, прошу знающих помочь мне.
Приведенный ниже код отражает не столько отправную точку, сколько идею создания менюшки.
Хотя, вероятно, это и не лучший способ.

Код
#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);



Непомнящий Евгений
Вы поищите, тут есть уже готовые решения меню - проще взять и адаптировать, чем делать с нуля
IgorKossak
QUOTE (brunql @ Dec 11 2010, 19:53) *

Далеко не лучшая реализация. На мой взгляд избыточна.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.