FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Суббота, 03.12.2016, 18:37
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей 
Форум » Баг - Трекер » Новые » nextion (часть 5)
nextion (часть 5)
findeler
Дата: Воскресенье, 21.08.2016, 12:38 | Сообщение # 1
Лейтенант
Группа: Проверенные
Сообщений: 76
Награды: 1
Репутация: 1
Статус: Offline
не работает процедура получения значения переменной из 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)
---------------------------------------------
Куда копать ?

Прикрепления: gl1_2.flp(80Kb)


Сообщение отредактировал findeler - Воскресенье, 21.08.2016, 11:14
 
Олег Дата: Воскресенье, 21.08.2016, 13:06 | Сообщение # 2
Гуру
Группа: Проверенные
Сообщений: 721
Награды: 20
Репутация: 15
Статус: Online
Цитата findeler ()
не работает процедура получения значения переменной из nextion.
А если периодичность опроса увеличить?
 
findeler Дата: Понедельник, 22.08.2016, 08:17 | Сообщение # 3
Лейтенант
Группа: Проверенные
Сообщений: 76
Награды: 1
Репутация: 1
Статус: Offline
Цитата Олег ()
А если периодичность опроса увеличить?

Не помогает, я пробовал от нуля до 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.08.2016, 08:18
 
Форум » Баг - Трекер » Новые » nextion (часть 5)
Страница 1 из 11
Поиск:

FLProg © 2016
Яндекс.Метрика