Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Софтуерни бутони - как?
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=9812
Страница 1 от 1

Автор:  Instinct [ Нед Яну 22, 2012 1:06 pm ]
Заглавие:  Софтуерни бутони - как?

Здравейте,
Опитвам се да си направя нещо като GSM - меню. Тоест имам 4 бутона, едно LCD и един pic18f4550. Иска ми се да разбера каква е логиката и като цяло алгоритъма с който да накарам на дисплея да ми излизат различни опции. Съответно с единия бутон (нарочен за "избор") да влизам в дадена опция, оттам със същите бутони да мога да прецъквам новото меню и тнт. Ако някой има обяснение на човешки език, моля да споделя. А и още нещо - езикът за програмиране ще е С. Всякакви идеи, обяснения и примери са добре дошли :D

Автор:  amdatlon [ Нед Яну 22, 2012 2:24 pm ]
Заглавие:  Re: Софтуерни бутони - как?

Ами не знам по прицип как ги правят професионалистите, но имам скалъпено едно меню което ми върши работа :
viewtopic.php?f=7&t=7692

Автор:  Cekins [ Нед Яну 22, 2012 8:13 pm ]
Заглавие:  Re: Софтуерни бутони - как?

За съжаление ще трябва сам да си изградиш концепция за менютата. Колкото по-универсално толкова по добре. Примерно аз го правя с индекси. Всяко меню има индекс. Всяко подменю - подиндекс. Всеки индек/подиндекс и т.н. указва следващото и предното меню в дървото. Самите надписи ги слагам във флаша подредени на по един ред и т.н. както ми пасва на ситуацията и ги чета от там при нужда и според индекса. После ако има стойности за редактиране пак използвам миндекси за да знам коя точно стойност се редактира и къде трябва да се запише после.

Интерфейса винаги е бил най-сложното нещо. Съвременните компютри станаха толкова мощни, не защото има нужда от такава изчислителна мощ за оснвните задачи, а защото имат нужда от красотийки и глезотийки.

Автор:  ToHu [ Вто Яну 24, 2012 11:35 pm ]
Заглавие:  Re: Софтуерни бутони - как?

Твоя въпрос ми се струва изпреварва доста времето си. Струва ми се че не си много наясно с микроконтролерите, по добре започни с бутон и светодиод, научи се да отчиташ кога е натиснат, пък после и да управляваш LCD-то и чак тогава задавай такива въпроси, ако намериш за нужно да ги задаваш, защото не е важно как ще го организирап софтуерно, това е въпрос на решение, просто за конкретна цел или по сложно подобно на това което предложи Cekins.

Автор:  Cekins [ Сря Яну 25, 2012 10:20 am ]
Заглавие:  Re: Софтуерни бутони - как?

Като го правя просто - после губя дни да добавям нещо. Като го правя сложно губя дни да го направя, ама после лесно се променя и добавя. За да се получи елегантно трябва да има ясно изразена структура. Над този проблем винаги съм губил най-много време от дивелъпмънта на което и да е устройство.

Мога да те посъветвам да процедираш така : изключваш компютъра и вземаш един лист. Нарисуваш си цялото дърво със всички менюта и подменюта. Задаваш им индекси и т.н. После го мислиш как може да се реализира в софтуера. Чак тогава сядаш да го разписваш. При мен действа - като го видя нарисувано и започват да ми се раждат идеите. Е, някой път ми се раждат и без рисунки, ама това е много рядко.

Автор:  Instinct [ Сря Яну 25, 2012 8:26 pm ]
Заглавие:  Re: Софтуерни бутони - как?

Благодарности за насоките на всички.
Нова съм в програмирането на С , а май и на микроконтролерите като цяло. Иначе светодиода и бутона го минах, със "debounce"-инга и тнт. Като казваш "индекси", да си призная не ми прояснява много картинката, но предполагам още имам за четене от дебелата книжка за програмирането :) Та дано някой ден взема, че го направ това меню!

Автор:  Cekins [ Сря Яну 25, 2012 11:30 pm ]
Заглавие:  Re: Софтуерни бутони - как?

Мммдобре. Обяснявам...

Значи имаш едно главно меню с 4 реда да кажем.
Имаш един група променливи да кажем така:
0,1,2,3,4,5. Така... нулата ти означава главното меню и ще ти укаже къде да се върне от него - в случая някакъв основен екран примерно

1 ти е индекса на текущото (главно) меню
2 ти указва първо меню, като тази променлива се явява указател към първото подменю и т.н.

Някъде си следиш на кой ред си.

Да приемем че първото подменю има три подменюта. Неговите индекси ще изглеждат така
1,2,6,7,8 - 1 индекс за връщане, 2 текущо, 6,7 и 8 подменюта.
По същата логика второто подменю индексите му биха изглеждали 1,3,9,10,11,12 ...

Аз също си включвам и брой на редове в даденото меню, дали има променлива на даден ред, коя е променливата, дали може да се редактира, от какъв тип е променливата, в какви граници и с каква стъпка може да се редактира. Така информацията за един ред ми е доста повече от текста, обаче е гъвкаво и така може да се структурира много лесно голямо дърво. А после лесно се добавят и променят неща

По този начин имаш и лесни указатели към всеки ред - как ще си ги организираш в програмата си е въпрос на вкус.

Това е само леко побутване :) дано от тук насетне и на теб да ти дойдат някакви идеи. И езика е само инструмент - не е важно на какъв език пишеш - важно е да мислиш на езика на машината.

Автор:  Instinct [ Вто Яну 31, 2012 8:00 pm ]
Заглавие:  Re: Софтуерни бутони - как?

Супер, схванах идеята! Малко тия индекси и пойнтери не са ми ясни, но пак съм доволна. Ще ги разбера и тях някак :) Мерси за помощта!

Автор:  Cekins [ Вто Яну 31, 2012 8:35 pm ]
Заглавие:  Re: Софтуерни бутони - как?

Ами то в случая даже не става въпрос за поинтер-и а за обикновен масив от променливи подредени по подходящ начин.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/