Časovače - podívejte se na řešení zde: http://forum.merenienergie.cz//viewtopic.php?pid=686
Dále práce s bity v proměnné:
Využijte možností jazyka C:
if (ram[5] & 128) { echo('osmý bit je nastaven'); };
if (ram[5] & 4) { echo('třetí bit je nastaven'); };
Nemusíte nic odečítat nebo porovnávat. Přímo se zeptejte na konkrétní bit.
Předávání parametrů:
Tak ještě jednou. Nejprve nastavíte hodnotu. Pak index. A pak příkaz k zapsání. Protože to totiž nejde poslat najednou.
sys[140] - příkaz k zapsání (program převezme hodnoty když zde není nula)
sys[141] - index do ram[]
sys[142] - nová hodnota do ram[]
if (sys[140] != 0) // neni-li sys[140] nulove
{
i = sys[141]; // prevezmu cilovy index do promenne i
ram[i] = sys[142]; // zapisu do ram[] novou hodnotu
//
sys[140] = 0; // prave jsem to zapsal, takze at se mi ten zapis porad neopakuje
}
Nejprve pošlete do SDS hodnotu v sys[142]. Následně tam pošlete index do ram[] v sys[141]. A nakonec sdělíte programu ať to zpracuje, tak že pošlete nenulové číslo do sys[140].
Program si to převezme, zapíše to do ram[] a sám vynuluje sys[140], takže je připraven pro další kolo.
Nevidím důvod používat ten složitý zápis pomocí sekvence která se musí dělit. Pole ram[] má 512 indexů - to musí bohatě stačit.
Zkuste:
řekněme že máme max 16 místností [ 0 až 15 ]
a osm bloků hodin [ 0 až 7 ]
ram[BLOK*8 + 0] až ram[BLOK*8 + 15] = teplota pro jednotlivé místnosti 0 až 15, pro daný BLOK hodin
pak např. pro BLOK = 4 (což je pátá hodina) a šestou místnost (což je místnost index 5) bude
teplota v ram[] na pozici ram[4 * 8 + 5] což je ram[37].
Je to jednoduché, jen je potřeba se zamyslet a správně si udělat indexy (např. napsat do tabulky v excelu atd.).
Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !