|
Система меню, Меню для встраиваемых систем |
|
|
|
Oct 30 2005, 23:15
|

Частый гость
 
Группа: Свой
Сообщений: 174
Регистрация: 4-11-04
Из: zp.ua
Пользователь №: 1 046

|
Цитата(_artem_ @ Oct 29 2005, 21:50) Rekursiya ochen elegantnoe resenie dlya prostix menyu , v prtotivnom sluchae vam pridetsya ili dla kazdogo vidgeta ego view state pisat (polozenie, fokus ..) ili ze rezervirovat dinamiceski strukturu dlya etogo posredstvom malloc ili tomu podobnoe . No pri rekusrii nelzja ubivat okna kotorie gde to poseredine dereva gui . Не уверен я насчет элегантности. Даже в виндовсе не используется рекурсия для построения графического интерфейса. Там используются callback функции. Рекурсия очень плохая штука, если у вас многозадачная система. Редкая система может быть однозадачной, а при построении пользовательского интерфейса я себе плохо представляю как ее можно нормально сделать не многозадачной и при этом не только заниматься рисованием менюшек, но еще и производить обмен по паре-тройке интерфейсов, производить измерения в каналах АЦП и выводить результаты на экран, не говоря про то, что органы управления (кнопки или проч.) надо тоже опрашивать. "Баба-яга против" (с)
--------------------
Имей мужество пользоваться своим собственным разумом! (с) И.Кант
|
|
|
|
|
Oct 31 2005, 00:35
|

учащийся
    
Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249

|
Цитата(bialix @ Oct 31 2005, 01:15) Не уверен я насчет элегантности. Даже в виндовсе не используется рекурсия для построения графического интерфейса. Там используются callback функции. Рекурсия очень плохая штука, если у вас многозадачная система. Редкая система может быть однозадачной, а при построении пользовательского интерфейса я себе плохо представляю как ее можно нормально сделать не многозадачной и при этом не только заниматься рисованием менюшек, но еще и производить обмен по паре-тройке интерфейсов, производить измерения в каналах АЦП и выводить результаты на экран, не говоря про то, что органы управления (кнопки или проч.) надо тоже опрашивать. "Баба-яга против" (с) Pod elegantnostyu ya imel vvidu prostotu. V windows i drugix GUI sistemax konechno nelzya ispolzovat rekursiyu. Ya popdrazumeval tekstoviy LCD i obyazatelnoe ispolzovanie RTOS'a - mozno odnu zadachu s nizkim prioritetom videlit na nee, pri uslovii esli razmer dereva menyu izvesten ( kolichestvo urovney) chtobi izbezat perepolneniya steka. Chto libo bolee seryeznoe uze ne predpolagaet ispolzovanie rekursii.
--------------------
Зачем лаять на караван , когда на него можно плюнуть?
|
|
|
|
|
Oct 31 2005, 11:43
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 23-07-05
Пользователь №: 7 043

|
Цитата(bialix @ Oct 31 2005, 01:15) Цитата(_artem_ @ Oct 29 2005, 21:50) Rekursiya ochen elegantnoe resenie dlya prostix menyu , v prtotivnom sluchae vam pridetsya ili dla kazdogo vidgeta ego view state pisat (polozenie, fokus ..) ili ze rezervirovat dinamiceski strukturu dlya etogo posredstvom malloc ili tomu podobnoe . No pri rekusrii nelzja ubivat okna kotorie gde to poseredine dereva gui . Не уверен я насчет элегантности. Даже в виндовсе не используется рекурсия для построения графического интерфейса. Там используются callback функции. Рекурсия очень плохая штука, если у вас многозадачная система. Редкая система может быть однозадачной, а при построении пользовательского интерфейса я себе плохо представляю как ее можно нормально сделать не многозадачной и при этом не только заниматься рисованием менюшек, но еще и производить обмен по паре-тройке интерфейсов, производить измерения в каналах АЦП и выводить результаты на экран, не говоря про то, что органы управления (кнопки или проч.) надо тоже опрашивать. "Баба-яга против" (с) Что Вы понимаете под многозадачностьсю ?
|
|
|
|
|
Oct 31 2005, 12:06
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата Что Вы понимаете под многозадачностьсю ? Наверно тут все-таки говорится не о многозадачности как таковой, т.е. о выделении отдельных задач, их переключении, сохранении контекста и т.д. А о своеобразной псевдомногозадачсти (прошу прощения за такое выражение). Здесь я полностью согласен с bialix. Действительно, нужно и меню выводить, и (в моем случае) температуру измерять, да еще и за UART'ом следить. Но не встраивать же туда ОС. Просто, в холостом цикле опрашиваются кнопки для нужд меню + вызывается функция снятия показаний с термодатчиков + функция обработки сообщений от UART. И все отлично работает. В прилагаемых мной исходниках (выше на странице) это видно, там вызывается функция msr_wake_service(), которая опрашивает датчики и выполняет сервис связи по UART. Ну и конечно прерывания от таймера используются, а кудаж без них:-)
--------------------
Выбор.
|
|
|
|
|
Nov 1 2005, 08:31
|

Местный
  
Группа: Свой
Сообщений: 263
Регистрация: 7-10-05
Из: UA
Пользователь №: 9 342

|
Цитата(ObitJr @ Oct 31 2005, 13:43) Что Вы понимаете под многозадачностьсю ? Например, простенькая "кооперативная" многозадачность а-ля Salvo или JacOS. Что интересно -- работает!!!
--------------------
Gray©at
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|