• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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];
должно помочь.
 
Сверху Снизу