Zmena časovania prístroja za behu
K napísaniu tohoto príspevku ma podnietil e-mail od jednoho čitateľa mojej stránky, ktorý sa dotazoval - citujem:
"Potreboval bych vedet, jestli je mozne nejakym zpusobem pri behu aplikace menit casovani pristroje. Konkretne jde o to, ze bych potreboval nastavovat v pristroji archiver ruzne casy pro ukladani dat a to behem chodu aplikace. Lze to vubec?"
V minulosti som niečo takéto riešil, takže sa pokúsim podeliť sa o to.
Uživateľ CP vie, že prístroje je možné aktivovať dvoma základnými prostriedkami - buď cyklickým časovaním (čiže pravidelne v nejaký časový interval) alebo podľa potreby (aktivácia "od udalosti"). Pri časovaní zadávame prístroju interval časovania buď priamou hodnotou alebo konštantou. Konštantu však samozrejme počas behu aplikácie nie je možné meniť. Bolo by krásne, keby interval časovania bolo možné zadávať i pomocou premennej - to však možné nie je.
Musíme si teda vypomôcť inak. Najprv si však stanovíme, že prístroj - napr. archiver - chceme časovať 3 rôznymi hodnotami, a to napr. 1 sekunda, 5 sekúnd a 10 sekúnd. Podstata riešenia spočíva v tom, že vloženému prístroju "archiver" nepridelíme žiadne časovanie. Aktivovať ho budeme z troch rôznych prístrojov "program" príkazom "send archiver". Až každý z týchto troch prístrojov "program" bude časovaný, a to práve hodnotami 1 sekunda, 5 sekúnd a 10 sekúnd. O tom, ktoré časovanie zvolíme, budeme rozhodovať za behu napr. pomocou premenných typu "boolean". Tieto 3 prístroje "program" by potom mohli vyzerať nasledovne:
program casovanie1; timer=1; begin if cas_1 then send archiver; end; end; end_program; program casovanie2; timer=5; begin if cas_2 then send archiver; end; end; end_program; program casovanie3; timer=10; begin if cas_3 then send archiver; end; end; end_program;
Ako vidno, riešenie nie je príliš komplikované - pomocou premenných "cas_1", "cas_2" a "cas_3", ktoré sú typu "boolean" (a ktoré vhodne prepíname), rozhodujeme o tom, z ktorého prístroja "program" budeme aktivovať prístroj "archiver". A premenné časovanie prístroja za behu aplikácie máme na svete. Takýto spôsob riešenia však predpokladá, že prístroj chceme časovať síce rôznymi, ale pevne danými (a predom známymi) hodnotami. Dá sa však zabezpečiť i plynulá zmena hodnoty časovania za chodu aplikácie - je to však o malinko zložitejšie a tom až niekedy nabudúce.
Pre lepšie pochopenie (alebo otestovanie) si môžte stiahnuť demo, kde je aplikovaný hore uvedený príklad.
download:
seq-demo.zip - 1344 bytov
Ano, ved to v clanku pisem. Ale v case vzniku c...
Ale veď blogger umožňuje publikovať na vlastnej...
Pod "fyzickou postou" myslite papierovu postu?...
Dobry den, da sa opakovany spam nejako legalne...
Zhruba taky postup aplikujem dlhe roky, spisane...