Проболема в том, что когда я перехожу на страницу №1 в дисплее, картинка (crop) кнопки ВКЛ-ВЫКЛ меняется на ту, что под номером 0.
Вот схема.
А вот код, который получается при компилировании:
Код: Выделить всё
void loop()
{
if(_trgt4)
{_swi12=8;}
else
{_swi12=7;}
bool _tmp4 = nextion_TouchEv7_Q;
if (_tmp4) { if (! _trgt4I) _trgt4 = ! _trgt4; }
_trgt4I = _tmp4;
if (nextion_TouchEv7_Q) { if (! _nextionSetAttr27_oldState ) {_nextionSetAttr27_oldState = 1; _nextionSetAttr27_isNU = 1; _nextionSaveDataPICC_P1_E5 = _swi12 ;}} else {_nextionSetAttr27_oldState = 0;}
// -----------------------------------------------------------------------------------------------------------------
if (nextionAskPageNamper(100) == 1)
{
if (_nextionSetAttr27_isNU)
{
_nextionCommandTempString = String("Page1.OnOff.picc=") + String(_nextionSaveDataPICC_P1_E5);
nextionSendCommand(_nextionCommandTempString.c_str(), 100); nextionAck(100);
_nextionCommandTempString = "ref OnOff";
nextionSendCommand(_nextionCommandTempString.c_str(), 100); nextionAck(100);
_nextionSetAttr27_isNU = 0;
}
} else {_nextionSetAttr27_isNU = 1; }
// -----------------------------------------------------------------------------------------------------------------
if(nextion_TouchEv7_Q) {_nextionCommandTempString = "get Manual.P1up.val";} else {_nextionCommandTempString = "get Manual.P1dn.val";}
...............
Получается, что программа в каждом цикле спрашивает номер страницы и когда я зайду на первую, где есть моя кнопка, тут же начнет проверять переменную_nextionSetAttr27_isNU, а ей в блоке объявления переменных присвоен ноль. То есть выполняется else, где ей присваивается 1, а в следующем цикле выполняется if со значением этой переменной - 1, где идет отправка в дисплей значения номера картинки (_nextionSaveDataPICC_P1_E5) кнопки OnOff. А так как номер мы задаем переключателем, который находится внутри блока if нажатия кнопки (сразу над пунктиром), то получается, что у переменной _nextionSaveDataPICC_P1_E5 значение 0. То есть логично, что перейдя на page 1 я увижу изменение crop-а картинки на номер 0.
Поправьте если я где ошибся, потому, что если не ошибся - то это баг одного из ключевых блоков работы с дисплеем Nextion.