Добрый день, форумчане!
Стоит такая задача: при событии, скажем, pio0=0 должны на экране смениться 2 изображения в обозначенных зонах и загореться светодиод, подключенный к pio1. Код написан, всё работает. Смена картинок осуществляется командой vis q1,0 и vis b0,0. Ни один таймер в это время не запущен (при запущенных таймерах ситуация та же). Но беда в том, что имеются “артефакты” на изображении. Видео прилагаю. https://cloud.mail.ru/public/Zocd/Uyzqj5h6R На 1-м видео, где компоненты Обрезка и Картинка видно, как отрабатывает команда vis. На 2-м видео видно процесс нажатия компонента Кнопка. И никаких артефактов там нет.
Вопрос: так и должно быть? А как избавиться от таких артефактов?
Чисто на данный момент нашёл для себя вариант: использовать вместо компонентов Картинка и Обрезка компонент Кнопка.
Но тогда встал вопрос: а как будет выглядеть код команды равный событиям Touch Press Event () и Touch Release Event ()? Т. е. можно сформулировать по другому этот же вопрос: как, скажем из таймера, какой командой сэмулировать нажатие кнопки на экране?
На один свой вопрос ответ нашёл: Instruction Set - Nextion - пункт 3.3 - команды Touch.
Но про артефакты вопрос остался.
click
Где там артефакт - я так и не понял.
-
Да, я уже нашёл (про click). Спасибо.
-
Ну это я так назвал: “артефакт”. ХЗ, мож оно (явление это) у профи по другому зовётся. На видео, где кнопки с цифрами (я нажимаю цифру 2), нажатие именно кнопки (button) сопровождается плавным изменением цвета со стального на чёрный. На другом видео (где смена картинки происходит командой vis у компонентов Crop и Picture) видно, что прежде чем картинка сменится возникают белые квадраты. Это вот проявление белых квадратов я и назвал “артефактами”… Как от них избавиться, скажем так, правильно?
Забегая вперёд скажу, что я уже нашёл решение: использовать вместо команд vis p0,1 и vis q0,1 (для картинки и обрезки соответственно) команды сначала tsw b4,1 и click b4,1, а потом click b4,0 и tsw b4,0.
Но уж сильно это смахивает на костыль, имхо.
Посему, вопрос остаётся: как правильно сделать смену картинки, чтоб вот без прорисовки белых квадратов было (как при нажатии кнопки)?
P.S.: да, забыл упомянуть, что в дебаггере при отладке этих артефактов не проявляется. Они видны непосредственно на самом экране (в моём конкретном случае это 5" “К”-серия).
Я бы попытался заморозить обновление на время vis. Как-то там ref_stop/ref_star, что ли…
Итак, сам спросил - сам разобрался))
Оказалось, что есть несколько решений вопроса… Иногда надо читать досканально инструкцию производителя, а не понимать так, как ты сам привык… ))
- про прорисовку белого квадрата, он же “артефакт”, ответ такой: в инструкции Instruction Set - Nextion в пункте 3.11 есть подпункт “– use layering with mindful purpose, can cause ripping and flickering.” Т.е. мерцание при применении vis - так и должно быть. Отсюда следует вывод, что команду vis желательно применять только в событии преинициализации страницы, имхо.
- а избавиться от мерцания картинок и текстов (и не городить костыли) во время работы непосредственно на странице помогают команды 4.2, 4.3, 4.4 и 4.5.
Посмотрел описание команд ref_stop/ref_star. Не понял вашу идею. ((
Ну да ладно. Бескостыльный способ найден, см. мой пост выше. Тему закрываю.