| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Реализация на меню http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=5226 |
Страница 1 от 1 |
| Автор: | Ки4о [ Вто Дек 18, 2007 3:25 pm ] |
| Заглавие: | Реализация на меню |
От няколко дена се мъча са реализирам меню на С ама стигнах до под кривата круша.Имам 4 (Up,Down,Set,Esc) бутона и ЛСД,контролер и периферия. Та някой може ли да даде идея как се прави.Търсих из гооглето.Работат е там че искам да реализирам меню в меню,нещо от сорта: RUN SETUP <- Това <- ми е указател кое съм избрал,чрез натискане на Up/Down.След избора при натискане на Set примерно се влиза в меню SETUP и отново се изписва меню подобно на горното и пак се повтаря процедурата.Правил съм подобно нещо на асемблер преди години но си беше голям гърч.На С стигна до изписване изписване на буквите на дисплея,мести се стрелката и от там насетне - ядец.Та някой може ли да помогне ? |
|
| Автор: | TheWizard [ Вто Дек 18, 2007 4:05 pm ] |
| Заглавие: | |
такова правих преди доста време и ми е трудно да ти намеря сорса ама беше нещо от този род Структора и масив от нея [code] Up, Down, Set, Esc, Line1, Line2, 0: 2, 1, @Edit, @Menu, "TEST 0", "PROBA 0" 1: 0, 2, @Edit, @Menu, "TEST 1", "PROBA 1" 2: 1, 0, @Edit, @Menu, "TEST 2", "PROBA 2" [/code] Up/Down - на кой ред от масива да иде Set/Esc - коя функция да изпълни Lines - какво да изпише |
|
| Автор: | Nikola Kirov [ Вто Дек 18, 2007 4:16 pm ] | |||||||||
| Заглавие: | ||||||||||
Иамаше по форума 2-3 теми по въпроса. Реализира се най добре с структура с която се описва менюто и поведението му. Ето ти един жокер от нещо готово.
Това е написано доста грозно но по новите неща които съм правил са по трудни за разбиране. Ще пробвам да обясня идеята. struct MenuStr { char __flash *String; Това е името на подменюто char __flash *StringHead; Това се изписва като хедър на съответното меню char ConfigA; Това и следващото съдържат флагове и параметри на менюто char ConfigB; char P1; P1-P7 Параметри на менюто char P2; char P3; char P4; char P5; char P6; char P7; char MenuFunction; } MenuStackStr се ползва за да съхраниш състоянието на менютата преди да отвориш следващото подменю и възстановяване на най горното след затварянето му. Как изглежда като картинка може да видиш в подфорума за логическия анализатор. Там в някоя от темите имаше картинки. Така на C беше първия вариант на това меню. Това на картинката е вече на C++ и повече не съм реализирал меню на C но идеята е същата и при C++. |
||||||||||
| Автор: | Zdrav [ Вто Дек 18, 2007 8:47 pm ] |
| Заглавие: | |
Реализацията зависи много от типа LCD и компилатора, после от процесора и организацията на самите менюта. Според мен най-удобно се реализира на С++. Правил съм го и на чист ANSI С, но впоследствие осъзнах че в процеса на усъвършенстване на кода се опитвам да направя това което компилатора на С++ може да направи вместо мен. Предполагам че LCD е буквено цифров, двуредов, а компилатора е някой за PIC. Моят жокер е - масив от const указатели към функции. Със стрелките нагоре/надолу намаляваш/увеличаваш с единица една променлива, която ти е индекс в този масив. При натискане на бутона "SET"("OK") извикваш функцията от позицията в масива. А тази функция е входната ти точка в новото меню. Всяко от менютата има по един масив от указатели към функции, по една променлива която е индекс в масива, по една функция която е входна точка в менюто и т.н. Писмените обяснения биха били най-удобни под формата на код, но едва ли ще ти свърши работа моя, а и реализацията на меню беше една от важните начални стъпки в писането на С/С++ за мен навремето. Стъпка която е най-добре всеки да направи сам. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|