в какой момент (в Вашем примере UARTCommander3) можно передавать из UART в WEB параметры Enable,speed,sensivity, setting_time, current_time?
Честно говоря, не совсем понял вопрос. Пример в части UART->WEB работает так:
1. Заводим таймер, который через каждые 0,1 сек запускает parse_rx_buf(void)
2. Эта функция вычитывает приемный буфер UART и распарсивает то, что туда пришло за последние 0,1 сек.
3. Если туда пришла определенная ранее строка (а в этой строке содержатся все значения параметров), то заполняются поля структуры:
Код:
pcsw->enable=comm[2];
pcsw->speed=comm[3];
pcsw->sensivity=comm[4];
pcsw->curr_time=(comm[6]<<8)+comm[5];
pcsw->setting_time=(comm[8<<8)+comm[7];
Если туда пришло что-то не то, какой-то мусор или некорректное что-то, то поля структуры не меняются.
4. Теперь мы можем в любой момент прочитать поля этой структуры с тем, чтобы, например, отобразить их в WEB. Для этого "родную" функцию web_int_callback дополняем своей функцией. В самом конце web_int_callback пишем:
Код:
else swbd_web_int_callback(web_conn, cstr); //tcp_put('?');
Теперь можно определить свою функцию swbd_web_int_callback(web_conn, cstr) и прописать там свои колбэки. Можно, конечно, было всё это в основную функцию web_int_callback затолкать, но мне показалось красивее отделить "родное" (pvvx'а) от самодельного.
5. Определяем:
Код:
void ICACHE_FLASH_ATTR swbd_web_int_callback(WEB_SRV_CONN *web_conn, uint8 *cstr)
{
if(!os_memcmp((void*)cstr, "swbd_", 5)) {
cstr+=5;
if(!os_memcmp((void*)cstr, "enable", 6)) tcp_puts("%u", pcsw->enable);
else if(!os_memcmp((void*)cstr, "speed", 5)) tcp_puts("%u", pcsw->speed);
else if(!os_memcmp((void*)cstr, "sensivity", 9)) tcp_puts("%u", pcsw->sensivity);
else if(!os_memcmp((void*)cstr, "setting_time", 12)) tcp_puts("%u", pcsw->setting_time);
else if(!os_memcmp((void*)cstr, "curr_time", 9)) tcp_puts("%u", pcsw->curr_time);
else tcp_put('?');
}
}
6. Ну и все. Теперь в тексте веб-странички можно написать, например, ~swbd_speed~, и на месте этой записи на реальной страничке отобразится текущая скорость.
Прилагаю доработанный пример. Он на основе более новой версии "свалки" и там в корне есть файл качалка.txt, где написано, что нужно изменить в исходной "свалке", чтобы получить эту функциональность. Таким образом, если хотите, можете легко адаптировать самую новую версию "свалки". Учтите только, что функционал TCP<->UART при этом отключается, так как мне он не нужен.
Там же пример странички (my.htm) c примером нового функционала.
Конечно, было бы, наверное, красивее из приемного буфера данные вычитывать по прерываниям, а не по таймеру. Но у меня ума не хватило, как это корректно сделать, положительного результата так и не смог добиться. Но меня и так устраивает, работает стабильно (при моей скорости поступления данных в UART).