• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

PROGMEM для форматированных строк.

Atom

Member
Всем привет.

Не специлист в наСилии и тем балее наС++. Как правильно делать форматированный вывод из PROGMEM?

Этот гайд читал, но однозначного ответа не получил.
C++:
  char temp[ _TMP_HTMLSIZE ];
 
  PGM_P html_temp_ds18x20  = PSTR("<div>Sensor%d: %0.1f&#x2103;</div>");   
 
  snprintf_P ( temp, _TMP_HTMLSIZE, html_temp_ds18x20, index, f_temp );
И такой код работает превосходно, но PGM_P можно использовать внутри функции и в другой функции будут уже недоступны.

А вот
C++:
const char c_html[] PROGMEM =
"<div>Temperature:<div id='tmp%d'> %3.1f </div></div>"
"<div>Humidity:<div id='hmd%d'> %2.0f </div></div>"
"</div><script>setInterval(60000, function(){"
"ag('json?obj=%d', function(d){"
    "document.getElementById('hmd%d').innerHTML = d['humidity'] + ' %'; "
    "document.getElementById('tmp%d').innerHTML = d['temp'] + ' °C';"
    "});"
"});</script>";

String  CDHT::getHTML() {

    String ret = "";

        char temp[500];
        sprintf(temp, (char*)pgm_read_dword(&(c_html[0])), index, temp, index, humidity, index, index, index);
        ret = temp;

    return ret;
}
компилится превосходно, но нифига не выводит.

Кто как засовывает в строку форматированный текст?
 
Сверху Снизу