не работает процедура получения значения переменной из nextion.
То есть передаётся всегда = 0 хотя её значение в самом nextion меняется.
Дурит, анализ нажатия кнопок. (непонятно как работает,).
Получить информацию о изображении тоже не возможно. (всегда ноль)
Если говорить в общем, то передача в некстион работает, а вот получение данных из него нет. Проблема наблюдается на всех элементах.
софт для nextion 0.37
flprog 1.14 Пятнадцатая версия вообще не даёт работать, но об этом писал ранее.
сам код.
void loop()
{
if(_isTimer(_nextionGetValue1_StartTime, 500)){ _nextionGetValue1_StartTime = millis(); _nextionGetValue1_isNU = 1; }
if(_nextionGetValue1_isNU){_nextionCommandTempString = "get main.key_gvs_press.val";
nextionSendCommand(_nextionCommandTempString.c_str(), 0);
_nextionTempLissen = nextionListen(0);
if(_nextionTempLissen.code = 'q') {_nextionGetValue1_outputValue = _nextionTempLissen.number;};
_nextionGetValue1_isNU = 0;}
digitalWrite(13, (_nextionGetValue1_outputValue) == (1L));
digitalWrite(9, (_nextionGetValue1_outputValue) == (0L));
}
Добавлено (21.08.2016, 11:12)
---------------------------------------------
Вот код чтения и записи. Запись работает, чтение нет.
//Чтение
if(_isTimer(_nextionGetValue1_StartTime, 500)){ _nextionGetValue1_StartTime = millis(); _nextionGetValue1_isNU = 1; }
if(_nextionGetValue1_isNU){_nextionCommandTempString = "get main.key_gvs_press.val";
nextionSendCommand(_nextionCommandTempString.c_str(), 0);
_nextionTempLissen = nextionListen(0);
if(_nextionTempLissen.code = 'q') {_nextionGetValue1_outputValue = _nextionTempLissen.number;};
_nextionGetValue1_isNU = 0;}
digitalWrite(13, (_nextionGetValue1_outputValue) == (1L));
digitalWrite(9, (_nextionGetValue1_outputValue) == (0L));
//Запись
if (1) { if (! _gen2I) { _gen2I = 1; _gen2O = 1; _gen2P = millis(); } } else { _gen2I = 0 ; _gen2O= 0;}
if (_gen2I) { if ( _isTimer ( _gen2P , 10000 )) { _gen2P = millis(); _gen2O = ! _gen2O;}}
if (_gen2O) { if (! _nextionSetAttr2_oldState ) {_nextionSetAttr2_oldState = 1; _nextionSetAttr2_isNU = 1; _nextionSaveDataVAL_P0_E6 = 0 ;}} else {_nextionSetAttr2_oldState = 0;}if (_nextionSetAttr2_isNU) {_nextionCommandTempString = String("main.key_gvs_press.val=") + String(_nextionSaveDataVAL_P0_E6);
nextionSendCommand(_nextionCommandTempString.c_str(), 0); nextionAck(0);
_nextionSetAttr2_isNU = 0; }
Добавлено (21.08.2016, 11:54)
---------------------------------------------
Покопал дальше.
if(_nextionTempLissen.code = 'q') {_nextionGetValue1_outputValue = _nextionTempLissen.number;};
условие _nextionTempLissen.code = 'q' выполняется. Но данных нет. (_nextionTempLissen.number=0)
Добавлено (21.08.2016, 12:38)
---------------------------------------------
Проблема не зависит от версии nextion editor 0.33 0.35 0.36 0.37
И не зависит от версии flprog 1.12 1.14 1.15
переменную пишет, но не читает.
Добавлено (21.08.2016, 12:38)
---------------------------------------------
Куда копать ?
nextion (часть 5)
nextion (часть 5)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось findeler 21 авг 2016, 11:14, всего редактировалось 1 раз.
nextion (часть 5)
А если периодичность опроса увеличить?findeler писал(а):не работает процедура получения значения переменной из nextion.
nextion (часть 5)
Не помогает, я пробовал от нуля до 1000 мс дело в коде функции.Олег писал(а):А если периодичность опроса увеличить?
Добавлено (22.08.2016, 08:17)
---------------------------------------------
Итак, ошибка в коде блока.
Костыль выглядит так.
if(_isTimer(_nextionGetValue1_StartTime, 500)){ _nextionGetValue1_StartTime = millis(); _nextionGetValue1_isNU = 1; }
if(_nextionGetValue1_isNU){_nextionCommandTempString = "get main.va0.val";
nextionSendCommand(_nextionCommandTempString.c_str(), 0);
//
delay(100);
//
_nextionTempLissen = nextionListen(0);
if(_nextionTempLissen.code = 'q') {_nextionGetValue1_outputValue = _nextionTempLissen.number;};
_nextionGetValue1_isNU = 0;}
digitalWrite(9, (_nextionGetValue1_outputValue) == (5L));
digitalWrite(8, (_nextionGetValue1_outputValue) == (0L));
digitalWrite(7, (_nextionGetValue1_outputValue) == (100));
В код добавлена задержка после команды отправки некстион и чтения значений оттуда. (100 мс это значение от фанаря, буду подбирать минимальное). Да и delay если будет больше 5-6 мс нужно будет заменить на проверку таймера.
Последний раз редактировалось findeler 22 авг 2016, 08:18, всего редактировалось 1 раз.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость