Code: Select all
Supla::Storage::WriteState((unsigned char *)¤t_multi, sizeof(current_multi));
Supla::Storage::ReadState((unsigned char *)¤t_multi, sizeof(current_multi));
double current_multi;
Więc jak to zrobić aby było dobrze?
Code: Select all
Supla::Storage::WriteState((unsigned char *)¤t_multi, sizeof(current_multi));
Supla::Storage::ReadState((unsigned char *)¤t_multi, sizeof(current_multi));
double current_multi;
Nie wiem. Powinno działaćkrycha88 wrote: Fri Dec 25, 2020 7:23 pm Chciałem zapisać wartość double za pomocą:przy próbie odczytywania dostaję błąd: Warning! Attempt to read state outside of section sizeCode: Select all
Supla::Storage::WriteState((unsigned char *)¤t_multi, sizeof(current_multi)); Supla::Storage::ReadState((unsigned char *)¤t_multi, sizeof(current_multi)); double current_multi;
Więc jak to zrobić aby było dobrze?![]()
current_multi była zmienną globalną, jeżeli zmieniłem to w taki sposób to już działa:klew wrote: Fri Dec 25, 2020 11:44 pmNie wiem. Powinno działaćkrycha88 wrote: Fri Dec 25, 2020 7:23 pm Chciałem zapisać wartość double za pomocą:przy próbie odczytywania dostaję błąd: Warning! Attempt to read state outside of section sizeCode: Select all
Supla::Storage::WriteState((unsigned char *)¤t_multi, sizeof(current_multi)); Supla::Storage::ReadState((unsigned char *)¤t_multi, sizeof(current_multi)); double current_multi;
Więc jak to zrobić aby było dobrze?![]()
. A jesteś pewien, że pierwszy zapis się wykonał? Jeśli tak, to podeślij większy fragment kodu
Code: Select all
void onLoadState() {
double _current_multi;
Supla::Storage::ReadState((unsigned char *)&_current_multi, sizeof(_current_multi));
current_multi = _current_multi;
}
double current_multi;
Code: Select all
Supla::Storage::SaveStateAllowed(0);
Supla::Storage::FinalizeSaveState();
Dodam metodę, która taki zapis wymusi. Ręcznie musiałbyś wykonać tą sekwencję:krycha88 wrote: Mon Dec 28, 2020 9:31 am Jeszcze raz pozwolę się zapytać. Czy jest możliwość wymuszenia zapisania do eeproma niezależnie od ustawionego czasu setStateSavePeriod??
Próbowałem wykorzystać ten metody:zapisanie się powodzi ale przy wczytaniu wartości dostaję błąd:Code: Select all
Supla::Storage::SaveStateAllowed(0); Supla::Storage::FinalizeSaveState();
"Validating storage state section with current device configuration
Element state section size doesn't match current device configuration"
da się to jakoś ugryźć?
Code: Select all
Supla::Storage::PrepareState();
for (auto element = Supla::Element::begin(); element != nullptr;
element = element->next()) {
element->onSaveState();
}
Supla::Storage::FinalizeSaveState();
Przy okazji, jak będziesz się do tego zabierał, to może auto save dla rolet po zmianie położenia?
Gdyby na urządzeniu oprócz rolety pojawił się inny element, dla którego chcielibyśmy ustawić interwał np. 2h, to dla rolety mógłby być on już za długi.