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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Организация меню
Integral
сообщение Oct 14 2008, 21:22
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 9-08-08
Пользователь №: 39 519



Есть екранчик на котором менюшка, перебераеться вверх/вниз, выбераеться что нужно и т.д.

Вопрос в том может кто знает какието стандартные подходы для организации меню? Например вот у меня.... двухстрочный екранчик, есть указатель на елемнт который сейчас выбран. (стрелочка например) При гортании вверх/вниз стрелочка ползает, и при необходимости передвигаеться весь список... Ну думаю понятно.

Так вот, менюшку я сделал и все работает. Но как оказалось получилось настолько тупо что даже сам начал плутаться в програме..... очень сложно добавлять/удалять пункты меню, делать бОльшую/меньшую "глубину" меню и т.п.

Так вот, может есть какойто популярный и т.п. подход для организации таких дел? Нужно такой подход чтобы устранить проблемы которые я описал выше.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 14 2008, 21:28
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Integral @ Oct 14 2008, 23:22) *
Вопрос в том...

Свежо sad.gif. Обсуждалось не раз. Поиском воспользуйтесь.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Integral
сообщение Oct 14 2008, 21:49
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 9-08-08
Пользователь №: 39 519



Уж очень больно много тем нужно пересмотреть.... wacko.gif
Придуть удачный запрос не удается чето....
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Oct 14 2008, 21:53
Сообщение #4


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



А Вы ищите через google в связке с electronix.ru . Сам так делаю, ибо местный поиск оставляет желать лучшего.


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
Integral
сообщение Oct 14 2008, 21:57
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 9-08-08
Пользователь №: 39 519



Мне токо меню всяких модных ресторанов попадаются... biggrin.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 14 2008, 22:02
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Integral @ Oct 14 2008, 23:57) *
Мне токо меню всяких модных ресторанов попадаются... biggrin.gif

Дело в том, что надо почитать хелп по пользованию поиском Google. Очень помогает искать там, где НЕТ меню ресторанов, например, на electronix.ru


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
EugeNNe
сообщение Oct 15 2008, 04:33
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 424
Регистрация: 6-03-06
Из: Н.Новгород
Пользователь №: 14 997



Вот тута было http://electronix.ru/forum/index.php?showt...=23625&st=0
Go to the top of the page
 
+Quote Post
kosyak©
сообщение Oct 15 2008, 06:25
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 179
Регистрация: 1-10-07
Из: НЧ
Пользователь №: 30 966



Когда делал девайс с клавиатуркой и текстовым ЖК...
Там в файле menu.c и menu.h реализация меню и описание необходимых структур.
Чтобы это все работало необходима реализация некоторых функций стандартной библиотеки
+ еще парочка - вообще в файле conio.h описание всех реализованных мной функций.
ну и пример использования там же....
Если интересно станет пиши - помогу разобраться.
Да, писалось все под компилятор Keil.... но это, думаю, не принципиально...
Прикрепленные файлы
Прикрепленный файл  menu.rar ( 3.47 килобайт ) Кол-во скачиваний: 108
 
Go to the top of the page
 
+Quote Post
Integral
сообщение Oct 18 2008, 13:22
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 9-08-08
Пользователь №: 39 519



Всем очень благодарен за ответы.

Лично мне подошёл вариант от e-moe тута

После некоторых доработок все успешно работает.

Думаю с вопросом грамотного создания менюшки много кото сталкивается, может создать отдельную тему и прикрепить ее сверху?
Go to the top of the page
 
+Quote Post
Sharasir
сообщение Jan 2 2009, 01:23
Сообщение #10





Группа: Участник
Сообщений: 5
Регистрация: 2-01-09
Пользователь №: 42 879



Паяю давненько, МК начал программировать недавно, а на С вообще первый проект. Вобщем пытаюсь собрать ус-во для управления аквариумом (поддержание дневной и ночной температуры, вкл/выкл подсветки, аэратора, кормление в заданное время). Собрал на макетной плате (PIC16F628, LCD 2строки/8 символов, четыре кнопки, DS18B20, будет датчик освещенности) Вобщем не знаю как организовать меню. Сделал переменную Menu которую инкр/декр с помощью кнопок перелистывания меню а на индикатор вывожу символы сохраненные в массивах конст. через Switch(Menu). Всего 10 пунктов меню, 2 из которых еще имеют подменю. И закончилась память программ у пика ((((. 2кБ. А это только кнопки, LCD, меню и часы ). А еще нуно вставить инициализацию и обращение к DS18B20, опт. датчик и прочую математику... Может както можно организовать такое меню более щадяще для памяти программ? Обидно, с выводами МК влез, и только из-за прошивки не хочется ставить PIC16F876 (28 ног, завалялся у меня).
Go to the top of the page
 
+Quote Post
petrd
сообщение Jan 2 2009, 08:24
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 3-06-08
Пользователь №: 38 012



Я делаю через структуры. Это удобно, если надо расширять меню и подменю. Но в контроллеры с малым объемом памяти программ и данных такое засовывать смысла нет, так как структуры скушают большой кусок памяти данных, а преобразование чисел в строки для LCD и математика займет неплохой кусок памяти программ (я говорю про Си). Поэтому для маленьких МК, наверное, лучше через switch.
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Jan 2 2009, 10:13
Сообщение #12


;
******

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



Цитата(petrd @ Jan 2 2009, 12:24) *
так как структуры скушают большой кусок памяти данных,

Не обязательно. Можно размещать структуры во флеше и нет необходимости читать их полностью. Правда, работа с памятью программ у разных компиляторов сильно отличается. В Hi-Tech, например, вообще неудобно ни работать, ни инициализировать эти структуры.

2Sharasir: какой компилятор используете?
Go to the top of the page
 
+Quote Post
Sharasir
сообщение Jan 2 2009, 16:50
Сообщение #13





Группа: Участник
Сообщений: 5
Регистрация: 2-01-09
Пользователь №: 42 879



Я только начал пробовать на С. Сначала попробовал МикроС. Чтото он слишком большой код генерировал. Я попробовал CCS. Он мне понравился больше, и эта часть проги написана на нем.
Go to the top of the page
 
+Quote Post
DL36
сообщение Jan 3 2009, 09:07
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 460
Регистрация: 5-10-06
Из: Херсон
Пользователь №: 21 006



Цитата(petrd @ Jan 2 2009, 12:24) *
Я делаю через структуры. Это удобно, если надо расширять меню и подменю. Но в контроллеры с малым объемом памяти программ и данных такое засовывать смысла нет, так как структуры скушают большой кусок памяти данных, а преобразование чисел в строки для LCD и математика займет неплохой кусок памяти программ (я говорю про Си). Поэтому для маленьких МК, наверное, лучше через switch.

Удобнее через указатели. Структура одного узла.
Код
typedef struct typeMenu
{            
   const unsigned char      *Caption;         /* Pointer to caption  */
   const typeDetektHotKey   *ppFunc;           // Указатель на указатель описывающий вызывающий функцию    
   const signed char        pos;              // Смещение позиции caption относительно стандартного

   const struct typeMenu    *parent;          // Указывает на родительский узел
   const struct typeMenu    *child;           // Если есть потомок
   const struct typeMenu    *up;              // Эти два выстраивают вертикальную цепочку                                      
   const struct typeMenu    *down;
   const struct typeMenu    *left;            // Соседние ветки
   const struct typeMenu    *right;

} typeMenu;
Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 5 2009, 11:03
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Sharasir @ Jan 2 2009, 04:23) *
Паяю давненько, МК начал программировать недавно, а на С вообще первый проект. Вобщем пытаюсь собрать ус-во для управления аквариумом (поддержание дневной и ночной температуры, вкл/выкл подсветки, аэратора, кормление в заданное время). Собрал на макетной плате (PIC16F628, LCD 2строки/8 символов, четыре кнопки, DS18B20, будет датчик освещенности) Вобщем не знаю как организовать меню. Сделал переменную Menu которую инкр/декр с помощью кнопок перелистывания меню а на индикатор вывожу символы сохраненные в массивах конст. через Switch(Menu). Всего 10 пунктов меню, 2 из которых еще имеют подменю. И закончилась память программ у пика ((((. 2кБ.
Хм. У вас только СТРОКИ из самого меню забьют эту самую память программ (1 символ - 1 слово) Меню надо кодировать максимально компактно, switch'и из программы убирать. Структура описания меню должна быть такая, что бы размер занятой памяти программ был равен количеству символов + несколько байт на каждый элемент меню (чем меньше, тем лучше). Код обработки меню не должен зависить от размера собственно меню.

В любом случае в 628 пик много не влезет sad.gif Можно попробовать 648 пик.

В качестве компилятора лучше взять HI-TECH PICC, он пожалуй наилучший

Сообщение отредактировал XVR - Jan 5 2009, 11:04
Go to the top of the page
 
+Quote Post

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

 


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


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