GyverPortal

TrampSRV

✩✩✩✩✩✩✩
30 Май 2022
2
0
Здравствуйте, не могу понять как разложить время
GPtime decodeTime(char* str);
Отдельно на часы и минуты, подскажите пожалуйста для новичка))
 

aidar_i

✩✩✩✩✩✩✩
1 Май 2021
64
8
я вот так делаю сейчас)
Я сделал так
C++:
void page1()
{
    String s;
    BUILD_BEGIN(s);
    add.THEME(GP_DARK);
    add.FORM_BEGIN("/update1");
    add.SUBMIT("Страница 2");
    add.FORM_END();
    BUILD_END();
}
void page2()
{
    String s;
    BUILD_BEGIN(s);
    add.THEME(GP_LIGHT);
    add.FORM_BEGIN("/update2");
    add.SUBMIT("Страница 1");
    add.FORM_END();
    BUILD_END();
}
вот и первый баг, по адресу local/update у меня открывалась страница обновления, теперь там загружается страница портала)
А если переименовать update1?
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@aidar_i, я уже не помню что там было) уже много всего переделано...
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@TrampSRV,
C++:
// разобрать строковое время HH:MM:SS в структуру
GPtime decodeTime(char* str) {
    GPtime t = (GPtime){0,0,0};
    uint8_t len = strlen(str);
    if (len == 5 || len == 8) {
        str[2] = str[5] = '\0';
        t.hour = atoi(str);
        t.minute = atoi(str+3);
        t.second = atoi(str+6);
        str[2] = str[5] = ':';
    }
    return t;
}
 
  • Лойс +1
Реакции: TrampSRV

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@TrampSRV, так смотри, как я вижу, формат времени состоит из 8 символов. 12:45:78 или из 5 символов 12:45
Строка ищет двоеточия в строке и разбирает на части.
Соответственно t.hour и t.minute
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,253
1,297
Москва
Строка не ищет двоеточия. Предполагается, что двоеточия стоят на 2-ом и 5-ом местах. Причем если строка будет 5 символов, то "заднее" двоеточие запишется фиг знает куда, вне области памяти переменной. По идее длина массива должна быть длина строки+ символ с кодом 0, тогда все заработает корректно.
Далее двоеточие заменяется на 0, т.е. строка как бы обрезается для строковых функций (получается 0 терминированная строка), и они уже (куски строк) переводятся в числа.
Потом двоеточия возвращаются на место.
Эта функция не будет работать с форматов времени 1:2:5 (один час, две минуты 5 секунд)
 

4LDIY

✩✩✩✩✩✩✩
17 Июн 2022
11
2
Всех приветствую. Есть возможность вызывать перезагрузку страницы из кода? (Не по кнопке)
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@4LDIY, по скрипту можно загружать изменения значений, не обновляя всю страницу.
 

4LDIY

✩✩✩✩✩✩✩
17 Июн 2022
11
2
@ASM,мне не значение нужно, а перестроить страницу
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@4LDIY, так можно же стандартными методами, <meta http-equiv="refresh" content="0">
 

4LDIY

✩✩✩✩✩✩✩
17 Июн 2022
11
2

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@4LDIY,
C++:
void PAGE_BEGIN() {
        *_gp_sptr += F("<!DOCTYPE HTML><html><head>\n"
        "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n"
        "<meta charset=\"utf-8\"></head><body>\n");
    }
Вместо PAGE_BEGIN впиши код в скобках, а далее по аналогии впиши другой код.

@4LDIY, где страницу строишь, можно страницу блоками, а можно через *_gp_sptr += рисовать, как без портала.
 

4LDIY

✩✩✩✩✩✩✩
17 Июн 2022
11
2
@4LDIY, где страницу строишь, можно страницу блоками, а можно через *_gp_sptr += рисовать, как без портала.
Добавление *_gp_sptr += F("<meta http-equiv=\"refresh\" content=\"0\">"); в конструктор заставляет страницу перезагружаться через указанное время, т.е. страница в постоянной перезагрузке. Может я что-то не так сделал? Может есть способ как-то менять это значение. Напр заранее выставить огромное число, а при необходимости менять на нуль?
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@4LDIY, интервал перезагрузки в секундах указывается.
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@4LDIY, из кода, без кнопки) как и просил) можно джава скрипт добавить.
 

4LDIY

✩✩✩✩✩✩✩
17 Июн 2022
11
2
@ASM, Можно подробнее? я же и пользую библы чтоб создать веб было проще, ибо не шарю. Вообще, если это возможно, то неплохо было бы на слайдер повесить перезагрузку.
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@4LDIY, так почитай описание библиотеки, зайти в сами библиотеки, там может что найдешь нужное)
 

4LDIY

✩✩✩✩✩✩✩
17 Июн 2022
11
2
@Олег Поляков, Мне сложно с этим разобраться, можно чуть подробнее, как это в конструкторе будет выглядеть и в коде. Буду признателен
 

Олег Поляков

★★★✩✩✩✩
18 Янв 2022
105
112
www.1812.ru
@4LDIY,
пишем кастом-код и вставляем его в html-страницу.
C++:
String cl;
BUILD_BEGIN(cl);
add.THEME(GP_LIGHT);
add.PAGE_BEGIN();
add.PAGE_BLOCK_BEGIN();

cl += F("<script type=\"application/javascript\" language=\"javascript\"");
cl += F("setTimeout(function(){location.reload();},1000);");
cl += F("</script>");

add.PAGE_BLOCK_END();
add.PAGE_END();
BUILD_END();
В переменной cl поместил скрипт, который перезагрузит страницу через секунду.
Теперь вам осталось только написать свой обработчик событий и вставить его код в переменную cl.