Ключевое ?лово

vk

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Железо для умного дома

ТЕМА: Конструктор кода в конструкторе прошивки ESP8266

Конструктор кода в конструкторе прошивки ESP8266 24 Март 2017 08:25 #17872

  • tolyan23
  • tolyan23 аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 84
  • Спасибо получено: 6
  • Репутация: 0
Проблема с файлом сохранилась при открытом веб интерфейсе хром предлагает мне сохранить файл с содержанием 0 0
в void webfunc(char *pbuf)
os_sprintf(HTTPBUFF,"Меркурий 230<br>"); // вывод данных на главной модуля
os_sprintf(HTTPBUFF,"Флаг ответа %d<br>",answ_ok);
os_sprintf(HTTPBUFF,"Таймаут %d<br>",data_len);
os_sprintf(HTTPBUFF,state_buf);
os_sprintf(HTTPBUFF,"<br>Шаг %d<br>",Nstate);
os_sprintf(HTTPBUFF,"Ответ %02x%02x%02x%02x<br>",rx_buf[0],rx_buf[1],rx_buf[2],rx_buf[3]);
os_sprintf(HTTPBUFF,"Активная суммарная мощность %d.%02d Вт<br>",Pact/100,Pact%100);
os_sprintf(HTTPBUFF,"Активная мощность фаза A %d.%02d Вт фаза B %d.%02d Вт фаза С %d.%02d Вт<br>",PactA/100,PactA%100,PactB/100,PactB%100,PactC/100,PactC%100);
os_sprintf(HTTPBUFF,"Напряжение фаза A %d.%02d В фаза B %d.%02d В фаза С %d.%02d В<br>",UA/100,UA%100,UB/100,UB%100,UC/100,UC%100);
os_sprintf(HTTPBUFF,"Ток фаза A %d.%03d А фаза B %d.%03d А фаза С %d.%03d А<br>",IA/1000,IA%1000,IB/1000,IB%1000,IC/1000,IC%1000);
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 24 Март 2017 10:18 #17874

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7195
  • Спасибо получено: 1114
  • Репутация: 194
os_sprintf(HTTPBUFF,state_buf); - это что ?
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 24 Март 2017 10:26 #17875

  • tolyan23
  • tolyan23 аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 84
  • Спасибо получено: 6
  • Репутация: 0
char state_buf[30]; // тут формируется текстовое сообщение отражающее стадию работы
например
strcpy(state_buf, "Мощность считана");
strcpy(state_buf, "Неверный параметр запроса");
Я пишу текстовое сообщение показывающее состояние устройства

И еще судя по всему я случайно использовал переменные объявленные в "скрытой" части программы а именно PactB изменяет значение. возможно какие то другие переменные тоже совпадают
char len,answ_ok;
char i=0;
char Nstate=0;
char state_buf[30]; // тут формируется текстовое сообщение отражающее стадию работы
char s[20];	// буфер отправки
char rx_buf[20]; // буфер приема
unsigned short int temp16; //
char* temp8 = (char*)&temp16; // трюк позволяющий обращатся у 16 битной переменной как массив их 2х однобайтных
unsigned long int Pact,PactA,Pact_B,PactC,temp32,UA,UB,UC,IA,IB,IC,PactD;
BYTE* temp88 = (BYTE*)&temp32; // трюк позволяющий обращатся к 32 битной переменной как массив их 4х однобайтных
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 24 Март 2017 10:31 #17876

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7195
  • Спасибо получено: 1114
  • Репутация: 194
Если бы был повтор объявления переменной, то тогда бы была ошибка. что переменная уже объявлена..

Подход с буфером , в который копируется строка текста не очень оптимальное решение - лучше её на месте сразу вставлять, хотя думаю она конкретно тут не причем.

Больше похоже на перезагрузку главной страницы.
У вас тут много переменных именно числа, а не char и нужно и объявлять как uint8_t
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 28 Март 2017 10:05 #17911

  • d51x
  • d51x аватар
  • Не в сети
  • Давно я тут
  • Сообщений: 105
  • Спасибо получено: 3
  • Репутация: 1
Не знаю, в эту ветку или нет написать, но выяснилась следующая закономерность с модулем конструктора кода.
Все началось в начале прошлой недели, точную дату не помню, возможно, 23 марта, если смотреть по логам сборки прошивок.

Так вот до 23 марта
Была у меня прошивка где было много всего:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Скажем так, девайс работал, но перегружался произвольно раз в 2-6 часов, страница настроек GPIO открывалась не до конца. Свободной памяти было около 10К.

Решено было половину модулей за ненадобностью отключить.
Отключил, следующее:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]


Пересобрал прошивку и обновил девайс.
В итоге на главной странице стали пропадать датчики (dsw и dht). Дисплей отключается.
В настройках Hardware слетают галки Enable DHT 11/22 и Enable DS18B20, обнуляются соответствующие GPIO.
В настройках Display слетают галки Enable backlight, Disable Logo. Опция типа дисплея слетает на Disable.
В настройках ADC KEY может слетать галка Enable ADC KEY, обнуляются или имеют произволное значение ранее настроенные поля GPIO и ADC.

При настройке всего этого минуты 2-3 (может и меньше, но не более 5) все работает нормально, а потом по новой.
Mqtt не шлет данные.

Отключением всех модулей и включением каждого модуля последовательно дошел до следующего:

ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ]

Свободной памяти 23К.
Это конечный список.
До момента включения модуля конструктора кода все работало хорошо. Как только включил конструктор кода (глобалные переменные и кол-во настроек по 5 штук), но не заходил в настройки designer code options, опять же все работало.
Как зашел, ввел значения и сохранил, получилось опять все тоже самое:
В итоге на главной странице стали пропадать датчики (dsw и dht). Дисплей отключается.
В настройках Hardware слетают галки Enable DHT 11/22 и Enable DS18B20, обнуляются соответствующие GPIO.
В настройках Display слетают галки Enable backlight, Disable Logo. Опция типа дисплея слетает на Disable.
В настройках ADC KEY может слетать галка Enable ADC KEY, обнуляются или имеют произволное значение ранее настроенные поля GPIO и ADC.


Т.е. можно сделать вывод, что настройки модуля конструктора кода кладутся поверх других настроек.
Администратор запретил публиковать записи гостям.

Конструктор кода в конструкторе прошивки ESP8266 28 Март 2017 10:12 #17913

  • Adminhs
  • Adminhs аватар
  • Не в сети
  • Администратор
  • Сообщений: 7195
  • Спасибо получено: 1114
  • Репутация: 194
Похоже слетает PRO , возможно из-за не верной прошивки модуля, когда не так размер прошит или слишком большая область настроек , если много напичкано опций.

debug в студию.
Если сильно накосячить в конструкторе кода, то прошивка так же может вести себя непредсказуемо
Основной канал проекта в Telegram t.me/wifi_iot
Администратор запретил публиковать записи гостям.
Модераторы: FlyRouter
Время создания страницы: 0.127 секунд

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.