23.09.2012, 17:58
|
|
Гражданин KAZUS.RU
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
|
Помогите сделать одноуровневое меню
Здравствуйте.
Мне нужна помощь в понимании алгоритма работы меню.
Есть велофонарь, у него 3-х сегментный светодиодный индикатор.
При удержании главной кнопки происходит вход в меню, это ясно.
Далее на индикаторе отображается 1-й пункт меню.
Вверх вниз джойстиком можно спускаться/подниматься по меню.
По удержании основной кнопки на нужном пункте мы входим в него и там снова джойстиком вверх/вниз выбираем параметры.
Посоветуйте простой алгоритм, а то не знаю с чего начать, боюсь сам сделаю сложно и запутанно, наверное имеются распространённые способы решения этой задачи.
|
|
|
|
23.09.2012, 18:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Помогите сделать одноуровневое меню.
Сообщение от putmannn
|
Посоветуйте простой алгоритм, а то не знаю с чего начать, боюсь сам сделаю сложно и запутанно, наверное имеются распространённые способы решения этой задачи.
|
Плохо!
1. Бояться сделать самому - очень плохо.
2. Просить помощи сделать что-либо, не начав делать самому - трижды плохо.
3. Хочется знать ваше отношение к... попрошайничеству. Считаете ли вы его постыдным?
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
23.09.2012, 19:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Помогите сделать одноуровневое меню.
|
|
|
Сказали "Спасибо" omercury
|
|
|
24.09.2012, 08:12
|
|
Гражданин KAZUS.RU
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
|
Re: Помогите сделать одноуровневое меню.
Сообщение от ut1wpr
|
3. Хочется знать ваше отношение к... попрошайничеству. Считаете ли вы его постыдным?
|
Нет не считаю, если не хочешь работать, то надо идти попрошайничать.
|
|
|
|
25.09.2012, 08:05
|
|
Гражданин KAZUS.RU
Регистрация: 01.02.2011
Адрес: г. Долгопрудный
Сообщений: 996
Сказал спасибо: 339
Сказали Спасибо 94 раз(а) в 91 сообщении(ях)
|
Re: Помогите сделать одноуровневое меню.
Там на каких то языках написано... Си наверное, я их не понимаю, я сразу в ассемблере учился.
Значит буду писать сам.
Спасибо.
|
|
|
|
25.09.2012, 09:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Помогите сделать одноуровневое меню.
Сообщение от putmannn
|
Нет не считаю, если не хочешь работать, то надо идти попрошайничать.
|
Третий вопрос был риторический. Ответ ведь имеется в первом топике.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
25.09.2012, 09:15
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Помогите сделать одноуровневое меню
Я делаю:
В основном цикле вечно кручу оператор switch (С) или SELECT(бейсик).
Есть две переменные mode и mode_enter. Переменная mode принимает номер процедуры:
switch (mode)
{
case 1: mode1_handle();
case 2: mode2_handle();
.....
}
далее в процедуре mode1_handle(void)
{
if (mode_enter) {mode_enter=0; mode1_enter_handle();
}
Теперь по порядку.
Процедура mode1_enter_handle() единожды обрабатывает вход в режим 1. Т.е. вывод инфу на дисплей, подключает кнопки, конфигурирует таймеры и все такое прочее.
Далее крутится mode1_handle(), которая выполняет обработку событий и в случае необходимости изменяет переменные mode и mode_enter, перенаправляя процессор в другие процедуры. Таким образом вектора ходят по программе в любом направлении. По этому принципу легко и наглядно строится любое меню и многие другие процессы.
В одном проекте использовал mode1_out_handle(), которую прокручивал один раз по выходу из режима. Это полезно бывает.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
25.09.2012, 10:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
|
Re: Помогите сделать одноуровневое меню
putmannn, тут есть и на асме
http://chipenable.ru/index.php/progr...struktsii.html
И вообще парень там неплохо и доступно излагает, правда в основном на Си.
А вам надо изучить язык С, хотя бы поверхностно, чтобы понимать чужие наработки. Ничего сложного там нет!
__________________
Мелочи не решают главного. Они решают всё!
Последний раз редактировалось gary2007; 25.09.2012 в 10:19.
|
|
|
Сказали "Спасибо" gary2007
|
|
|
25.09.2012, 10:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
|
Re: Помогите сделать одноуровневое меню
Я обычно по такой схеме менюшки делаю.
В swich- ах лень разбираться.
void prog0(char);
void prog1(char);
void prog2(char);
void prog3(char);
void (*prog)(char)=prog0;
int main()
{
while(1) { prog(getch()); }
}
void prog0(char x)
{
printf("Prog0: Get char-› %c\n",x);
prog=prog1;
}
void prog1(char x)
{
printf("Prog1: Get char-› %c\n",x);
prog=prog2;
}
void prog2(char x)
{
printf("Prog2: Get char-› %c\n",x);
prog=prog3;
}
void prog3(char x)
{
printf("Prog3: Get char-› %c\n",x);
prog=prog0;
}
|
|
|
Сказали "Спасибо" Boba_spb
|
|
|
27.09.2012, 17:54
|
|
Прописка
Регистрация: 24.08.2005
Сообщений: 139
Сказал спасибо: 17
Сказали Спасибо 16 раз(а) в 15 сообщении(ях)
|
Re: Помогите сделать одноуровневое меню
Сообщение от Boba_spb
|
Я обычно по такой схеме менюшки делаю.
В swich- ах лень разбираться.
void prog0(char);
void prog1(char);
void prog2(char);
void prog3(char);
void (*prog)(char)=prog0;
int main()
{
while(1) { prog(getch()); }
}
void prog0(char x)
{
printf("Prog0: Get char-› %c\n",x);
prog=prog1;
}
void prog1(char x)
{
printf("Prog1: Get char-› %c\n",x);
prog=prog2;
}
void prog2(char x)
{
printf("Prog2: Get char-› %c\n",x);
prog=prog3;
}
void prog3(char x)
{
printf("Prog3: Get char-› %c\n",x);
prog=prog0;
}
|
так делать некошерно!!!!
изучайте swich - сложного ничего нет можно хоть одно уровневое, хоть много уровневое
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:29.
|
|