Перейти к содержанию
    

я понял. спасибо.

чтоб не открывать отдельную тему хочу спросить. по сути дела это Linked List. Каждый член структуры имеет тип этой структуры, ну кроме указателей на функции. но такого типа в принципе нет, есть uint8_t, uint32_t , но Menu_item_t это наше определение. так сколько байт займет структура после компиляции?

6 указателей по 4 (для кортекса) байта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вобщем прикрутил таки

https://github.com/abcminiuser/micromenu-v2

Оч доволен. Навигация по пунктам меню, с колбэками, все работает четко. Но пункты дбавляю в дизайн тайм

//MAIN MENU
//            NAME      NEXT,       PREVIOUS    PARENT,      CHILD       //SELECT    //ENTER 
MENU_ITEM(m_manual, m_fails,    m_auto,       NULL_MENU,   NULL_MENU,  NULL_FUNC,   NULL_FUNC,  "MANUAL");
MENU_ITEM(m_fails,  m_muxbus,   m_manual,   NULL_MENU,   m_mf,       NULL_FUNC,   GoToChild,  "FAILS ");
MENU_ITEM(m_maint,  m_auto,     m_muxbus,   NULL_MENU,   m_lmfls,    NULL_FUNC,   GoToChild,  "MAINT ");
MENU_ITEM(m_auto,   m_manual,   m_maint,    NULL_MENU,   NULL_MENU,  NULL_FUNC,   NULL_FUNC,  "AUTO  ");

Но я как всегда со своими идеями - а что если добавлять пункты в ран тайм

void MenuItemCreate (Menu_Item_t Name, Menu_Item_t Next)
{
    MENU_ITEM(Name, Next, NULL_MENU, NULL_MENU, NULL_MENU, NULL_FUNC, NULL_FUNC, "TEST");
}

Компайлер конечно орет - он хочет extern. а я не могу передать extern в функцию.

Можно как то схитрожопить?

Изменено пользователем Jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я взял за образец меню от миландра

перетащил на свой контроллер и другой дисплей

все работает.

mdr1986ve3_menu_test.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я взял за образец меню от миландра

перетащил на свой контроллер и другой дисплей

все работает.

 

спасибо. очень даже интересная идея.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не секрет - Какая идея очень даже интересная ?

 

void ReadKey(void)
{
    uint32_t key;

    while (1) {
    key = GetKey();
    switch (key) {
    case SEL:
        SelFunc();
        break;
    case UP:
        UpFunc();
        break;
    case DOWN:
        DownFunc();
        break;
    case BACK:
        ReturnFunc();
        break;
    }
    WAIT_UNTIL_KEY_RELEASED(key);
    }
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...