Powiedzcie mi, bo czegoś nie rozumiem. Do obsługi danych JSON stworzono rozbudowaną bibliotekę https://arduinojson.org/v6. Pełno funkcji, przykładów itp. Jednak jeśli chciałbym usunąć dany wiersz to się niestety nie da, bo nie zwalnia to pamięci. Chcąc przykładowo wysyłać zaktualizowanego JSON'a w pętli, usuwając ostatnią wartość i dodając nową, szybko przepełni się pamięć. Podobne ostrzeżenie w opisie tej biblioteki znalazłem w kwestii zastępowania wartości jedna przez drugą - możliwe działanie niestabilne. Sprawdziłem no i niestety bufor się przepełnia. 4.2.7 - str. 107/108 dokumentu na stronie: https://arduinojson.org/v6/doc/serialization/
Do czego w takim razie mogłaby mi posłużyć ta biblioteka? Widzę jej zastosowanie tylko w jakichś jednorazowych przypadkach, gdy trzeba wygenerować w tym formacie dane. Autorzy sprzedają książkę jakby to było jakieś pełno sprawne działanie, a nie mogę zrealizować czegoś tak prostego jak opisałem powyżej. Chyba, że powinienem zrobić coś inaczej?
@KokiX: In practice, this problem only happens in programs that use a JsonDocument to store the state of the application, which is not the purpose of ArduinoJson. Let’s be clear, the sole purpose of ArduinoJson is to serialize and deserialize JSON documents.
usuwając ostatnią wartość i dodając nową, szybko przepełni się pamięć.
@KokiX: A nie możesz usuwać tej wartości po stronie serwera, z którego pobierasz te dane? Arduino powinno wtedy odbierać całość, ale odsyłać tylko ten element przeznaczony do usunięcia/zmienienia i serwer sobie to przetworzy. W sumie po co wysyłać znowu całość z powrotem?
@ms93: "serwerem" i generującym dane będzie ESP8266. Piszę sobie ręcznie składany string, który będzie często aktualizowany (dane online), a dane historyczne będę generował z użyciem funkcji z biblioteki ArduinoJSON. Dane historyczne nie będą tak często wysyłane, a w przypadku przepełnienia użyję funkcji clear() z linku powyżej.
@KokiX: Musisz brać pod uwagę, że jak coś jest za darmo, to pewnie musisz to zrobić sam. https://github.com/analityk/Calculator_1/blob/master/Calculator/src/array.h Tu masz jedynie kontener, zrobiłem sobie go jako bufor z jakąś abstrakcją danych. Pamięć alokujesz raz i zwalniasz raz albo wcale. Za to możesz ją wyczyścić i pisać od początku bufora. No i nie napiszesz więcej niż możesz.
Powiedzcie mi, bo czegoś nie rozumiem. Do obsługi danych JSON stworzono rozbudowaną bibliotekę https://arduinojson.org/v6. Pełno funkcji, przykładów itp. Jednak jeśli chciałbym usunąć dany wiersz to się niestety nie da, bo nie zwalnia to pamięci. Chcąc przykładowo wysyłać zaktualizowanego JSON'a w pętli, usuwając ostatnią wartość i dodając nową, szybko przepełni się pamięć. Podobne ostrzeżenie w opisie tej biblioteki znalazłem w kwestii zastępowania wartości jedna przez drugą - możliwe działanie niestabilne. Sprawdziłem no i niestety bufor się przepełnia.
4.2.7 - str. 107/108 dokumentu na stronie: https://arduinojson.org/v6/doc/serialization/
Do czego w takim razie mogłaby mi posłużyć ta biblioteka? Widzę jej zastosowanie tylko w jakichś jednorazowych przypadkach, gdy trzeba wygenerować w tym formacie dane.
Autorzy sprzedają książkę jakby to było jakieś pełno sprawne działanie, a nie mogę zrealizować czegoś tak prostego jak opisałem powyżej. Chyba, że powinienem zrobić coś inaczej?
In practice, this problem only happens in programs that use a JsonDocument to store the state of the application, which is not the purpose of ArduinoJson. Let’s be clear, the sole purpose of ArduinoJson is to serialize and deserialize JSON documents.
@KokiX: https://arduinojson.org/v6/api/jsondocument/clear/
https://github.com/analityk/Calculator_1/blob/master/Calculator/src/array.h
Tu masz jedynie kontener, zrobiłem sobie go jako bufor z jakąś abstrakcją danych. Pamięć alokujesz raz i zwalniasz raz albo wcale. Za to możesz ją wyczyścić i pisać od początku bufora. No i nie napiszesz więcej niż możesz.