-
- Мне чего-то не хватает. Не могу понять что считать состоянием автомата в обработке меню, а что свести в макрос или подпрограмму. Расскажите, пожалуйста как у вас работает меню. - mazur(14.09.2011 21:54)
- Не понял вопрос про "свести макрос", но у меня меню работает так. Vladimir Ljaschko(1849 знак., 14.09.2011 22:41)
- Получается что разрешение опроса кнопок идет из обработчика меню? - mazur(17.09.2011 09:31)
- Нет, флаги нажатых кнопок генерируются обработчиком клавиатуры в прерывании независимо. Затем Vladimir Ljaschko(596 знак., 17.09.2011 12:35)
- Блин, опять что-то не так делаю? Я сделал так: практически все вынес в в основной цикл. Соответственно, обработку программных таймеров, опрос кнопок. Тип клавиш\порты задаются дефайнами. Нажатие любой-ых клавиш-и, выставляется флаг (этот флаг mazur(344 знак., 17.09.2011 13:18)
- Спокойнее ;) Vladimir Ljaschko(397 знак., 17.09.2011 15:43)
- Подвешивать основной цикл на секунду - это неправильно. Такие длительные операции нужно разбивать на кванты. Нормальный период основного цикла - единицы..десятки мс. Время подавления дребезга обычно больше. Лeoнид Ивaнoвич(258 знак., 18.09.2011 12:05)
- Все верно, но я предпочитаю иметь возможность "грязного хака", чем не иметь. - Vladimir Ljaschko(18.09.2011 16:08)
- Странно, мы разве абсолютно по разному смотрим на подавление дребезга? И при чем здесь длина основного цикла? Хотя, может я чего и не знаю. По подавлению дребезга - Есть нажатие, выставили таймер, изменили состояние обработчика кнопок. При mazur(202 знак., 17.09.2011 18:55)
- Если основной цикл длинный, то можно пропустить следующее нажатие, посчитав его за длиииительный дребезг. Пользователь такому никак не обрадуется. Подавление дребезга не самоцель, а способ более точной идентификации нажатий клавиш пользователем. rezident(68 знак., 17.09.2011 19:19)
- Понял. - mazur(17.09.2011 19:22)
- и без всяких там буферов: реакция должна быть незаметной для пользователя (менее сотни мсек), а если это в какой-то момент невозможно - пользователь должен об этом однозначно знать koyodza(212 знак., 17.09.2011 19:31)
- +1. Усилия нужно тратить не на создание буфера, а на исключение тормозов при обработке нажатий. - Лeoнид Ивaнoвич(18.09.2011 12:06)
- У профессионалов есть функция для насильной чистки буфера в таких ситуациях. - fk0(17.09.2011 21:40)
- только они ею не пользуются :=P :=D - koyodza(18.09.2011 10:57)
- и без всяких там буферов: реакция должна быть незаметной для пользователя (менее сотни мсек), а если это в какой-то момент невозможно - пользователь должен об этом однозначно знать koyodza(212 знак., 17.09.2011 19:31)
- Понял. - mazur(17.09.2011 19:22)
- Если основной цикл длинный, то можно пропустить следующее нажатие, посчитав его за длиииительный дребезг. Пользователь такому никак не обрадуется. Подавление дребезга не самоцель, а способ более точной идентификации нажатий клавиш пользователем. rezident(68 знак., 17.09.2011 19:19)
- Подвешивать основной цикл на секунду - это неправильно. Такие длительные операции нужно разбивать на кванты. Нормальный период основного цикла - единицы..десятки мс. Время подавления дребезга обычно больше. Лeoнид Ивaнoвич(258 знак., 18.09.2011 12:05)
- Сто-о-оп! Если сообщение то же, то оно не записывается.... Нужно проверить... - mazur(17.09.2011 13:20)
- Спокойнее ;) Vladimir Ljaschko(397 знак., 17.09.2011 15:43)
- Блин, опять что-то не так делаю? Я сделал так: практически все вынес в в основной цикл. Соответственно, обработку программных таймеров, опрос кнопок. Тип клавиш\порты задаются дефайнами. Нажатие любой-ых клавиш-и, выставляется флаг (этот флаг mazur(344 знак., 17.09.2011 13:18)
- Нет, флаги нажатых кнопок генерируются обработчиком клавиатуры в прерывании независимо. Затем Vladimir Ljaschko(596 знак., 17.09.2011 12:35)
- Да, забыл спросить. Автоповтор разве отличен от кода клавиши? У меня делается так, если дефайном включены удержание и автоповтор, то из состояния автоповтора долбит сообщением-кодом удерживаемой клавиши. Сочетания клавиш, естесственно, другие mazur(110 знак., 15.09.2011 12:03)
- Нет, автоповтор совпадает. В каком-то проекте были другие коды, потому что величина инкремента зависела от времени удержания, и было динамическое разрешение автоповтора. Сочетания - коды другие. - Vladimir Ljaschko(15.09.2011 12:32)
- У меня при автоповторе к коду добавляется единичный бит где-то в старших разрядах. При желании его можно замаскировать, тогда код отличаться не будет. Лeoнид Ивaнoвич(456 знак., 15.09.2011 12:16)
- Не совсем понятно это: mazur(922 знак., 15.09.2011 11:16)
- Ответ Vladimir Ljaschko(1326 знак., 15.09.2011 11:49)
- Ну да, 1 автоматом намного проще рулить, чем 50-ю. :))) - mazur(15.09.2011 12:07)
- А вы не пытались "сверху - вниз" проектировать? - Скрипач(15.09.2011 16:40)
- Я помню -> Может что-то еще и не так делаю. Но пробую :) - mazur(15.09.2011 16:45, ссылка)
- Так откуда тогда мысли о "один автомат лучше чем 50"?! Автоматов должно быть ровно столько, сколько объектов в реальном мире, нет? - Скрипач(15.09.2011 16:51)
- Обязательно ли объект-автомат? - mazur(15.09.2011 17:06)
- Нет конечно, может быть: объект - несколько автоматов. - =AlexD=(15.09.2011 17:12)
- Разделяй и властвуй (C) - fk0(15.09.2011 19:15)
- зависит от особенностей самого объекта - koyodza(15.09.2011 17:21)
- Конечно, но я не помню других раскладов. Разве что автомат состоящий из нескольких подчиненных-спрятанных автоматов. - Скрипач(15.09.2011 17:27)
- типа того. Хотя тут уже можно говорить и о том, что это не совсем один объект, а несколько взаимосвязанных - koyodza(15.09.2011 17:59)
- Конечно, но я не помню других раскладов. Разве что автомат состоящий из нескольких подчиненных-спрятанных автоматов. - Скрипач(15.09.2011 17:27)
- Нет конечно, может быть: объект - несколько автоматов. - =AlexD=(15.09.2011 17:12)
- Обязательно ли объект-автомат? - mazur(15.09.2011 17:06)
- Так откуда тогда мысли о "один автомат лучше чем 50"?! Автоматов должно быть ровно столько, сколько объектов в реальном мире, нет? - Скрипач(15.09.2011 16:51)
- Я помню -> Может что-то еще и не так делаю. Но пробую :) - mazur(15.09.2011 16:45, ссылка)
- Это заблуждение. - =AlexD=(15.09.2011 14:10)
- Я все думаю, почему 50-100 автоматов? Это неприятие флагов\неумение их готовить или действительно необходимость?.... - mazur(15.09.2011 12:41)
- Я спрашивал автора 100 автоматов, но не получил ответа. В моих приборах реальных автоматов состояний с переменной состояния до 15. Поддержку функции с одним -двумя флагами/счетчиками, функционирующую без воздействия извне(ну, например, усреднение Vladimir Ljaschko(163 знак., 15.09.2011 13:03)
- Ну вот есть у Вас Ip-стек или USB в приборе, вы будете все их состояния в 1 автомат упихивать? Удачи! - she_(15.09.2011 14:20, )
- А у меня они есть? ;) - Vladimir Ljaschko(15.09.2011 19:21)
- Не знаю. Интересовались, откуда может взяться 50-100 автоматов - пожалуйста. - she_(15.09.2011 19:25, )
- А у меня они есть? ;) - Vladimir Ljaschko(15.09.2011 19:21)
- Тут больше жонглирование словами. Как назвать - автомат, процесс, задача, от этого суть не меняется. Я обычно называю "процесс" (от одноименного произведения Франца Кафки :) Лeoнид Ивaнoвич(2418 знак., 15.09.2011 13:30)
- И у меня есть устройство для промывки трубопроводов! Для пива в барах ;) Да, я тоже называю процессами, но тут тут вопрос был именно по особенностям реализации. - Vladimir Ljaschko(15.09.2011 13:38)
- У меня, к сожалению, не пиво, а всего лишь молоко :) - Лeoнид Ивaнoвич(15.09.2011 13:43)
- И у меня есть устройство для промывки трубопроводов! Для пива в барах ;) Да, я тоже называю процессами, но тут тут вопрос был именно по особенностям реализации. - Vladimir Ljaschko(15.09.2011 13:38)
- Ну вот есть у Вас Ip-стек или USB в приборе, вы будете все их состояния в 1 автомат упихивать? Удачи! - she_(15.09.2011 14:20, )
- Я спрашивал автора 100 автоматов, но не получил ответа. В моих приборах реальных автоматов состояний с переменной состояния до 15. Поддержку функции с одним -двумя флагами/счетчиками, функционирующую без воздействия извне(ну, например, усреднение Vladimir Ljaschko(163 знак., 15.09.2011 13:03)
- С другой стороны, на этот автомат "нанизан" весь проект, и я долго выбирал, как удобнее это все записывать и поддерживать. Остановился на препроцессоре. - Vladimir Ljaschko(15.09.2011 12:39)
- А вы не пытались "сверху - вниз" проектировать? - Скрипач(15.09.2011 16:40)
- Ну да, 1 автоматом намного проще рулить, чем 50-ю. :))) - mazur(15.09.2011 12:07)
- существуют указатели - koyodza(15.09.2011 11:19)
- Ответ Vladimir Ljaschko(1326 знак., 15.09.2011 11:49)
- А можно пример меню с редактируемыми параметрами для знакосинтезирующего ЖКИ? Все равно некоторые вопросы остались. Только сформулировать пока их не могу :) - mazur(15.09.2011 09:59)
- Дык ты же на С не читаешь? И у меня больше специфической функциональности. И при чем тут ЖКИ? Функции вывода в дисплей могут быть, могут не быть, это второстепенно. Vladimir Ljaschko(3549 знак., 15.09.2011 10:28)
- Получается что разрешение опроса кнопок идет из обработчика меню? - mazur(17.09.2011 09:31)
- Не понял вопрос про "свести макрос", но у меня меню работает так. Vladimir Ljaschko(1849 знак., 14.09.2011 22:41)
- Мне чего-то не хватает. Не могу понять что считать состоянием автомата в обработке меню, а что свести в макрос или подпрограмму. Расскажите, пожалуйста как у вас работает меню. - mazur(14.09.2011 21:54)