Mappa tartalmának figyelése, avagy valós idő és szimulációs idő…

Egyik ügyfelünktől jött a kérdés, hogy miképpen lehetne Plant Simulationban figyelni egy mappa tartalmát, és az ott megjelent fájlokat feldolgozni, majd törölni… itt most nem mutatjuk be a megoldás összes részletét, de az alapötlet az alábbiakban olvasható.

Először is hozzunk létre két változót, amire később szükségünk lesz, legyen ez a FolderPath (string) és a LastCheckTime (time). Emellett szükségünk lesz még a következő metódusokra: init, CheckFolder és DeleteFile. Meg persze valami ákombákom modell, ami tud futni, és egy EventController (eseményvezérlő). Most így néz ki valahogy a vázlat.

checkfolder1

Az init metódus igen egyszerű, a modell indulásakor meghívja a CheckFolder metódust.

checkfolder2

Az egyetlen bonyolultabb dolog a CheckFolder metódus tartalma… nézzük, mi is történik benne. Először is a getFilesOfFolder függvénnyel ki tudjuk gyűjteni a mappában lévő fájlok listáját… ezzel most nem kezdünk semmit, de az ügyfél példában itt lehetett megnézni, hogy van-e egyáltalán új fájl a mappában.

Utána lekérjük a rendszeridőt (ez nem a szimulációs idő, hanem a gépen lévő óra ideje, amit a timeofday(sysdate) függvény ad vissza. Megnézzük, hogy több, mint 1 perc telt-e el valós időben az utolsó ellenőrzés óta, ha igen, akkor ellenőrzünk.

A metódus végén 10 másodpercenként (szimulációs idő) újra meghívja a függvény saját magát.

checkfolder3

Innen már csak törölni kell a szükségtelen fájlt, amit valahogy így lehet megtenni:

checkfolder4

Leave a Reply