|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 6:01 pm
|
Страница 1 от 1
|
[ 9 мнения ] |
|
| Автор |
Съобщение |
|
Filo
Ранг: Минаващ
Регистриран на: Чет Юни 16, 2005 11:04 am Мнения: 37
|
 Реализация на меню
Чудейки се как да оптимизирам меню което ще правя ми дойде следната идея. Да си направя два масива. Единия масив ще съдържа името на всяка позиция от менюто, а другия масив ще съдържа указател за обработка на съответната позиция. Така сменяйки позицията хем ще сменям лесно индикацията, хем ще извиквам лесно функцията за обработка.
Как реализирате вие тези неща. Аз от 1 ден се чудя как да оптимизирам това меню че ми е малко кът паметта.
|
| Чет Юни 01, 2006 1:01 pm |
|
 |
|
valioman
Ранг: Почетен член
Регистриран на: Съб Сеп 17, 2005 5:07 pm Мнения: 813 Местоположение: Сливен
|
 Re: Реализация на меню
Колко ти е паметта и с какъв компилатор работиш и с какъв професор?
Питам те за да пробвам конкретен случай
А и горе долу какво меню искаш ?
|
| Чет Юни 01, 2006 1:19 pm |
|
 |
|
asp
Ранг: Популярен
Регистриран на: Сря Фев 22, 2006 6:27 pm Мнения: 376 Местоположение: plovdiv
|
Ами и аз правих меню и също като теб подходих с масив за текста от менюто и структура описваща характеристиките на менюто. Разделих менюто на подменюта с сходни характеристики всяко с свой масив за текст и своя стр за управление. Така при натиснат бутон за движение в менюто функцията която го поддържа променя структурата характеризираща менюто и в последствие вика друга функция която да рефрешне дисплея с промененото меню. В последствие анализирах менюта написани от по опитни спецове и установих 4е самото меню се прави като функция в процеса на изпълнение на която се изобразява екранният текст с указател към който се добавя отместване в зависимост от езика който е избран. Натискането на бутоните се очаква а не се рефрешва дисплеят при натиснат бутеон. Този подход ме се стори коренно различен от моя но и двата подхода работят. Имам недоказано предчувствие /поради недостатъчно време за проби и анализи/, че вторият подход е по прост откъм програмна реализация. Първият подход е по внедрим в операционна система. Това са си мои невинни разсъждения. Надявамсе някой да ги изкоментира.
|
| Чет Юни 01, 2006 4:17 pm |
|
 |
|
Filo
Ранг: Минаващ
Регистриран на: Чет Юни 16, 2005 11:04 am Мнения: 37
|
 Re: Реализация на меню
[quote="valioman"][/quote]
Пиша на CodeVision професора ми е Мега8. Менюто е просто 7 функции 2 от които са с подменюта от по 5 функции.
|
| Чет Юни 01, 2006 5:03 pm |
|
 |
|
Filo
Ранг: Минаващ
Регистриран на: Чет Юни 16, 2005 11:04 am Мнения: 37
|
Възобнових работа по менюто. И имам една много странна ситуация. Едно и също нещо написано по два начина се държи малко различно и не мога да си обясня защо така.
Идеята е че това е функция която се изпълнява докато не се натисне бутон 3.
Бутоните се четът на таймерно прекъсване на всеки 0.5 мс.
Първи начин. Работи според изискванията но не ми харесва как е написан.
Втори начин. Харесва ми как е написан но трябва да натискам бутон3 по няколко пъти докато го хване.
|
| Съб Юни 24, 2006 10:37 am |
|
 |
|
syrax
Ранг: Новодошъл
Регистриран на: Сря Яну 18, 2006 7:19 pm Мнения: 127
|
и аз тука сам се задълбал в едни менюта но открих цаката
пускам ви пример работи на 6 на мен специално ми трябваше малко време да схвана алгоритъма  )) работи изцяло на указатели
това е целия код който намерих /водят го "simple menu"/
надявам се да ви свърши работа
|
| Съб Сеп 09, 2006 11:56 am |
|
 |
|
Predator_MF
Ранг: Форумен бог
Регистриран на: Чет Окт 07, 2004 1:22 pm Мнения: 1949 Местоположение: София
|
В едно от устройствата си доста си играх да реализирам меню, опитах се да го направя максимално просто за използване, малко като обем и в същото време достатъчно бързо, бях малко ограничен откъм компилатора (CCS), но ето как съм го реализирал:
 |  |  |  | Код: struct {char key1,key2,key3,key4;}KeysINFO; // Това е проста структура в която слагам custom знаци над всеки бутон за да покажа за какво служи (бутоните са точно под дисплея)
struct _MenuStruct { int8 ms[6][7][13]; // [Menu][SubMenu][String]}; // Триредов LCD (3х12), първи ред изписва главното меню, втори ред изписва Submenu, на трети ред се изписват знаците на бутоните
struct _MenuStruct const MenuStruct= { "My Device 1.0 ","< Scanning >","< Sending >","< Echoing >","< OPTIONS >","< Memory >","", // Main Level " Scan All ","","","","","","", // Scanning " Send All ","","","","","","", // Sending " Echo ","<Echo RX1>","<Echo RX2>","< Echo All >","","","", // Echoing " Settings ","< Key Beep >","< Sound >","<LCD Contr>","<LED Contr>","< LED Power>","< LED Time >", // Options " Management ","< Review >","<FormatDisc>","","","","", // Memory };
void Display_SUB(int8 MainMenu_NUM,SubMenu_NUM) { LCD_Clear(); pLCD(MenuStruct.ms[0][MainMenu_NUM]); // pLCD е функция която изписва стринг на LCD-то If (MainMenu_NUM) pLCD(MenuStruct.ms[MainMenu_NUM][SubMenu_NUM]); else pLCD("Select Menu "); KeysINFO.key1 = esquare; KeysINFO.key2 = lsquare; KeysINFO.key3 = l_arr; KeysINFO.key4 = r_arr; LCD_SendCHAR(KeysINFO.key1); LCD_SendCHAR(" "); LCD_SendCHAR(KeysINFO.key2); LCD_SendCHAR(" "); LCD_SendCHAR(KeysINFO.key3); LCD_SendCHAR(" "); LCD_SendCHAR(KeysINFO.key4); } .. .. // Главната програма void main(void) {.. .. while(1) {Display_SUB(MMENU,SMENU); // сканирането на бутоните е чрез прекъсване, в което в две променливи се записват кои бутони са били натиснати и дали са били задържани, също както и колко време, след което се вика функцията Command_Handler(), в нея се изпълняват команди в зависимост от MMENU и SMENU } }
|  |  |  |  |
|
| Съб Сеп 09, 2006 3:46 pm |
|
 |
|
MYXATA
Ранг: Форумен бог
Регистриран на: Пон Юни 05, 2006 1:48 pm Мнения: 4906 Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
|
тази организация на менюта е добра когато имаш малко RAM и много FLASH/EEPROM на разположение. Явно натам си се запутил
_________________ ... ако трети ден не ти се работи... това означава, че е сряда !
|
| Пон Сеп 11, 2006 10:39 am |
|
 |
|
Cekins
Ранг: Форумен бог
Регистриран на: Сря Апр 20, 2005 12:02 pm Мнения: 9119 Местоположение: Разград
|
Идеята с указателите е най-умна според мен. И аз така съм си изпълнил едно меню. Плюс 3 байта контролни - какво прави реда, ако има за редактиране кое да редактира, какъв тип променлива е и т.н. Обаче за да го измисля структурно ми отне 1 седмица. Нещо подобно на това което syrax е покзал в примерчето.
|
| Вто Сеп 12, 2006 10:04 pm |
|
|
|
Страница 1 от 1
|
[ 9 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|