zamboga по событию, что вы находитесь не на главном экране. Как-то это делалось, без использования физических входов, сейчас по быстрому не подскажу.
zamboga по событию, что вы находитесь не на главном экране. Как-то это делалось, без использования физических входов, сейчас по быстрому не подскажу.
Нашёл старую тему с ровно тем же вопросом: https://owen.ru/forum/showthread.php?t=32351
Там тоже есть ваши ответы, но нет ответа на исходный сабж, к сожалению.
Я сам не могу сообразить, как отследить событие "вы на экране таком-то" или "вы покинули экран такой-то"
Блин, надо какой-то проект поискать... где-то было.
Да, единственным способом запустить таймер, который взведет переменную возврата экрана программным способом является переменная. Например на главном экране сделать переменную, изменение которой разрешит перейти к экранам просмотра и настроек.
То есть чтобы пойти в глубь меню сперва меняем переменную, по которой произойдет переход на следующий экран, уже с которого можно настроить перемещение кнопками.
Тут же сбрасываем эту переменную и запускаем таймер возврата к главному экрану, скажем на 5 минут, меньше или больше, если не выполнен переход по клавишам.
Можно клавишей ESC каждому экрану назначать возврат на главный экран, а другой клавише назначать переход назад.
Используем таймер TP, по заднему фронту ставим переменную возврата на главный экран.
TP запускаем переменной на главном экране для перехода в настройки или даже просмотра и при переходе ее тут же сбрасываем. По остальным экранам двигаемся уже при помощи переходов, настроенных на клавиши
Кстати в соседней теме еще один вариант, только увеличить 30 секунд BLINK до большего времени. Как бы вы ни ходили по экранам, то при BLINK.Q = 1 всегда будет переход на главный экран.
А находясь на главном экране и так на него же переход как бы.
Еще были реализации ввода пароля для входа в меню, но так не пробовал.
Последний раз редактировалось melky; 08.08.2023 в 13:22.
Суровый костыль. Что-то типа "Хочешь поменять настройки?" → Да/Нет, и запускаем таймер. Но это не решит главную задачу — авто-возврат по отсутствию активности с кнопками.
И главное: тебя в итоге выкинет в Главный экран в любой момент, даже в момент настройки какой-то переменной в глубине меню.
.
.
Уже сделал. Проблема та же — тебя выкидывает в Главный экран в любой, в самый случайный момент, даже в момент настроек. Не айс.
zamboga да, костыль. Сделайте время очень большим и все.
Вообще сделайте правилом возвращаться на главный экран при помощи ESC или комбинацией клавиш ESC + ХХХ, так же делайте возврат на уровень назад на предыдущий экран. Если персонал знает как управлять, то не важно где кто-то забыл выйти, нажал комбинацию и вышел сам. Ну а чтобы не нажимать, таймер с временем минут 15 и возврат на главный экран.
На BLINK действительно может выкинуть в любой момент, так как вы не знаете состояние текущего таймера, а вот вход в Настройки и запуск таймера у вас однозначно отведенное вами время.
Обработка кнопок из программы в ОЛ? НЕ ДОЖДЕТЕСЬ!!! (з.ы. представители Овен)
Индикация на каком экране находимся в программе ОЛ? см. пункт выше
это вы еще зарубежных контроллеров с паролями в меню настройки не щупали. Заходишь, вводишь перебором 4 цифры, добираешься до параметра, начинаешь читать мануал, пока прочитал, уже пароль сброшен и по новой вводи![]()
Последний раз редактировалось melky; 08.08.2023 в 13:57.
Это я прям сразу прописал=)
Да, точно, об этом я не подумал. Тогда да, это пока максимально наилучшее решение:
"Хочешь поменять настройки?" → Да/Нет, и запускаем таймер минут на 15.
Буду признателен, если скинете потом этот проект. Второй день бьюсь, хотя изначально "ща, фигня, за 10 мин сделаю, чё там делать-то, переменная и таймер"=)
не, не найдуу меня все безусловными переходами. Выход на экран аварий без функции возврата. Только руками.
планировал делать, но посчитал это лишней тратой времени, у меня всегда ESC выход в главное меню. То есть мне не важно, на каком экране застрял, нажал и вышел.
Но смысл да, если хочется выходить программно, только запуском таймера - Настройки - Да и переходим в следующий пул экранов с запуском таймера.
Здравствуйте, мне мало переменных ЭСППЗУ и пула адресов в режиме Slave (64 регистра типа int) в серьёзных проектах.
Упаковку бит в байты я делаю, но всё же.
Поскольку пишу макросы универсально (вложенные друг в друга в том числе) в них использую энергонезависимые переменные. Недавно озадачился упаковкой бит в байты для EEPROM, ибо 1 бит "кушает" 1 байт EEPROM. При создании пустого проекта уже занято 128 байт из 1016.
Написал макрос, однако, OL по-разному реагирует на одни и те же биты. На b0 не жалуется, на остальные биты просит линию задержки (но, лининия задержки всё портит). С b0 работает.