• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Странное поведение arduino/esp8266 (UPD: weird dtostrf())

aknod

New member
Собственно, не понимаю, почему не отправляются данные
Статичная строчка отправляется, с использованием sprintf() - нет
Сам код: codepaste.net/cwgc4h
Прошу помощи, если это кто-то осилит
 

GarryC

New member
Не очень понятно все-таки что выводится ?
Если выводится пустая строка, попробуйте заменить # на пробелы к примеру.
Может в подпрограмме вывода # зарезервирована.
 

aknod

New member
Поставил обратные слэши перед #. Вывод не изменился:
setup begin
FW Version:0018000902
to station + softap ok
Join AP success
IP:192.168.4.1
192.168.1.2
single ok
setup end
22.60
69
742.42
111
354 line
create tcp err
363 line
Sending:
[HASHTAG]#0123456789[/HASHTAG]
#T1#?
#H1#69
#P1#742.4
##
release tcp err

(111 - значения логических переменных)
UPD1:
Время: 2015-07-28 13:39:58,

Полученные данные:
[HASHTAG]#0123456789 [/HASHTAG]#T1#? #H1#73 #P1#737.8 ##
Ошибки: Wrong Value ?
E-mail с почты​
Значит, отправка идёт, но данные не обновляются из-за ошибки.
Как ни странно, но dtostrf() работает с давлением, но не работает с температурой:
Код:
dtostrf(temp, 3, 1, temp_ch);
dtostrf(pres, 3, 1, pres_ch);
Первая строчка не работает, вторая - замечательно. Типы переменных pres и temp - double.

UPD2: Подставляя в sprintf значения double temp и double pres, в выводе вместо значений температуры и влажности одни пробелы. Я чего-то не понимаю...
 
Последнее редактирование:

GarryC

New member
То есть данные передаются, но вместо значения температуры имеется "?"
Скорее всего вы имеете дело с переполнением буфера.
Сделайте
char temp_ch[8];
char pres_ch[8];
должно помочь.
 
Сверху Снизу