• Система автоматизации с открытым исходным кодом на базе 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;
}
компилится превосходно, но нифига не выводит.

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