@gidiara666,
РЕШЕНО.
Во flash память ESP помещаются файлы изображений объекта. Имена файлов должны иметь вид <префикс>N<постфикс>.
В моем случае резервуар, в котором имеется 4 датчика уровня. Соответственно должно быть 5 файлов /img/tank_0.png, /img/tank_1.png, /img/tank_2.png, /img/tank_3.png и /img/tank_4.png, отображающих состояния: 0%, 25%, 50%, 75% и 100%. Префикс - это "/img/tank_", а постфикс - ".png". Номер изображения задается компонентом NUMBER, принимающим значение, соответствующее текущему состоянию от 0 до 5. Компонент GP_CH_IMG создает 2 объекта: собственно IMAGE("tank") и не видимый NUMBER("level"). С периодичностью, указанной в GP.UPDATE("level", 2000); происходит обновление level. Период обновления "картинки" можно задать в строке s += "setInterval(function(){ OnChangeLevel()}, 2000);\n";.
Кому понадобится - пользуйтесь!
GP_NUMBER level("level");
...
#include <custom.h>
void build()
{ ...
GP.UPDATE("level", 2000);
GP_CH_IMG("tank", "/img/tank_", ".png", "level");
...
}
void action()
{ ...
if (ui.update("level"))
{ level.value = TankLevel; // Текущее состояние
ui.update(level);
}
...
}
custom.h
---------------
#pragma once
#include "GyverPortal.h"
void GP_CH_IMG(const String& name, const String& prefix, const String& postfix, const String& sub)
{ String s;
s = "<script>\n";
s += "setInterval(function(){ OnChange()}, 2000);\n"; // Интервал обновления изображения
s += "function OnChange()\n";
s += "{ " + name + ".src='" + prefix + "' + " + sub + ".value + '" + postfix + "';\n";
s += "}\n";
s += "</script>\n";
s += "<input type='number' name='" + sub + "' id='" + sub + "' value='0' onchange='OnChange()' style='display:none'>\n";
s += "<img id=" + name + " src='/img/tank_0.png'>\n";
GP.SEND(s); // отправь через GP.SEND
}
@gidiara666! Вам рекомендую зайти на форум православных в раздел "экзорцизм".