Не везде работает режим ввода

Автор Tyumentsev, 10 сентября 2021, 00:42:04

« назад - далее »

Tyumentsev

На видео видно проблему.
Только в меню ВОСКРЕСЕНЬЕ работает режим ввода, хотя все экраны абсолютно одинаковые, скопипастены.
Выход из меню в главное меню не происходит, хотя связи обратные есть.

Вообще странный случай. Режим ввода иногда и в другие дни срабатывает у П1.
Не пойму в чем дело?
На других системах В1 В2 В3 вообще не работает.

Artem

Посмотрел проект, рекомендации написал на почту

Tyumentsev

#2
На почту пока ничего не пришло. Может на другую напишите. tyumentsevs@gmail.com
В общем проблему решил по другому. Изначально не хотелось возиться с вычислениями, но пришлось. Сделал динамический таймер. Количество экранов сократилось до трех, использую массив в ПЗУ. Теперь работает все тоже самое но на трех экранах, подставляю разные данные из разных массивов. Количество переменных тоже конечно уменьшилось до 4 массивов в ПЗУ.
Но почему в прошлый раз так получалось? Память при компиляции задействована около 10%, резерв еще большой.
Или нельзя использовать такое количество экранов? Или переменных слишком много? Или и того и другого?

Artem

Дублирую сюда то что отправлял

1. Везде на экранах для активации таймера используете список параметров только для одной переменной. Лучше так не делать. Список параметров является виджетом-экраном и предполагает использование на весь экран. Кроме того он не дружит с другим полями ввода на экране. В данном случае лучше использовать обычный выпадающий список. Это первая причина
2.  На первом входе компаратора в начальный момент висит 0, следовательно на выходе 1, а значит для всех полей ввода часов всегда включено разрешение на ввод. Так делать нельзя, поля ввода даже невидимых экранов будут конфликтовать, если всем дать начало ввода. Можно сместить значение счетчика,чтобы ввод начинался с 1.
3. Слишком большой объем экранов. Как вариант лучше сделать следующее. Все переменные таймеров завести как массив, в схеме одного экрана сделать привязку переменных к полям с учетом индекса. В глобальных переменных завести переменную текущего редактируемого индекса таймера.При выборе какого-либо таймера устанавливать соответствующее значение этой переменной. В этом случае количество экранов и кода значительно уменьшится и упростится поддержка и отладка.

Artem

Скорее всего основная причина описана во втором пункте. Нельзя активировать ввод для "Поле ввода" на всех экранах, даже невидимых в данный момент


Tyumentsev

Спасибо. Список параметров вставил, чтобы самому не реализовывать режим ввода, а использовать встроенный. В принципе на одном экране работает без проблем.
Счетчик увеличу на 1. Думал если экран не активен, то неважно что там. Учту на будущее.
Выполнил по п.3. проблема ушла.