1

Téma: Jak uložit úsporně čísla

Chci použít data flash k ukládání hodnot. Zatím datum,čas,teplota,tlak.
Jak jsem vyčetl, tak paměť má 2Mb a vejde se tam 7260 hodnot.
Na stránku se vejde 66 hodnot, které se přepisují najednou.
Proto chci jednak napřed ukládat hodnoty do pole RAM a až jich bude 66, tak je uložit
do paměti. Taky bych chtěl data trochu komprimovat.

Datum a čas je vlastně jako NTP - takže je to jedno číslo. Budu dekodovat až na webu
Teplotu a tlak bych chtěl uložit do jednoho čísla. Asi jde použít bitový operátor.
Teplota může být navíc záporná. Víte někdo jak na to?
Díky

2

Re: Jak uložit úsporně čísla

Tak jsem udělal první pokrok. Funguje to pouze pro kladné teploty.
Poradí někdo jak dál anebo nějaký jiný způsob?
var i;
var j;
var k;
main
{
i=5050; //teplota
j=1035; //tlak
k=i<<15; //posuneme teplotu
k=k|j; // vlozime tlak
i=k & 0X7FFF; //dekodujeme tlak
echo (i);
k=k>>15; // dekodujeme teplotu
echo (k);
}

3

Re: Jak uložit úsporně čísla

Já jsem to řešil úplně jednoduchým násobením nad min.hodnotu a součtem. Tedy teplota je max 9999, tlak 9999. Výsledek např 2210*10000+1023=22101023. Toto uložit do RAM. Záporná hodnota zde není problém. Tlak je vždy kladný, čili se to dá uhlídat. Jen je potřeba dát pozor na překročení hodnoty 2147483648 (tj. max 31 bitu) pak se nastavi 32 bit jako znaménko mínus.

Zpátky např.
_teplota=ram[x]/10000;
_tlak=ram[x] % 10000;

4

Re: Jak uložit úsporně čísla

...anebo posílat data na eportal.merenienergie.cz

5

Re: Jak uložit úsporně čísla

Simi napsal:

Funguje to pouze pro kladné teploty.

Doplňte si tam test, jestli je číslo záporné. Pak si vyhraďte některý bit v cílové proměnné a ten v tom případě nastavte.
Jak to pak budete číst, stačí se podívat, jestli je ten bit nastavený nebo ne, a podle toho otočit znaménko výsledku.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !