Új hozzászólás Aktív témák
-
Szirty
őstag
válasz horvathcsaba #240 üzenetére
Hali Csaba!
És napi időpontokat szeretnék összehasonlítani. Pl. elmúlt-e már 7 óra. És ezt csak hihetetlen mennyiségű rendszerfunkcióval sikerült elérnem.
Van ennek vmi egyszerű módja?Van. 1 rendszerhívás. Persze akkor neked is csinálni kell valamit
Én úgy szoktam, hogy az SFC1-el másodpercenként egyszer kiolvasom a rendszer órát:A fenti példában az idő a Date_And_Time típusú #CPUIDO lokális változóban landol, ahonnan már úgy olvasod és használod fel, ahogy akarod.
A DATE_AND_TIME típus így néz ki:Mivel tudod melyik byte-on van az óra, a perc, stb, összehasonlítod közönséges komparátor utasítással. De ne feledd, a DATE_AND_TIME típus PCD adatokat tartalmaz!
Lehet ennél is egyszerűbben, méghozzá a Time-of-day interrupt. Ez arról szól, hogy egy általad meghatározott időpontban a CPU önállóan meghív egy OB-t. Az a funkció CPU függő, a CPU hw konfigjában találod.
Ezzel arra kell vigyázni, hogy ha a CPU órát átállítod (pl. daylight saving) úgy, hogy az állítás időben előre történik és a time of day interruptnak megadott időt pont átugorja, akkor egy exception keletkezik, amit külön kezelned kell a time error OB-ban!