Modul EnqueueDataOnTrigger
Modul pro spuštění čašovače na základě odeslání triggeru snímači a následné přeposlání dat.
!!!Důležité!!! tento modul musí být na levelu spolu s modulem ScannerTrigger
Parametry modulu EnqueueDataOnTrigger
Timeout: hodnota časovače po jejímž vypršení dojde k blokaci podle všech BlockDefinic
Parametry modulu ScannerTrigger
ManualTriggerActivationKey: klávesa pro manuální triggerování a následné odeslání dat na snímače IOPortWaitStates: Hodnota TTL, kterou když modul dostane, dojde k odeslání dat na snímače Data: Data, která se mají odeslat snímači v případě triggeru TargetPorts: Čísla portů (z coreového modulu Terminal), na která se v případě triggeru odešlou data
Pro programátory - Popis funkce a logiky modulu EnqueueDataOnTrigger ve spojitosti s modulem ScannerTrigger
V modulu EnqueueDataOnTrigger je nadefinována třída EnqueueDataOnTriggerMessage s prázdným konstruktorem. Tato třída se používá pro komunikaci mezi moduly EnqueueDataOnTrigger a ScannerTrigger a je zároveň spouštěčem logiky modulu EnqueueDataOnTrigger. Tato zpráva je odeslána z modulu ScannerTrigger po odeslání dat na snímače po nadefinovaném triggeru (nějaký TTL signál nastavený v parametru IOPortWaitStates ScannerTrigger). Komunikace je zprostředkována třídou Session.Messenger (jednoduchý popis této funkce je níže). Po odeslání message z modulu ScannerTrigger dojde k zaznamenání message v modulu EnqueueDataOnTrigger a zavolání metody StartTimerAndUnblock, která spustí časovač (m_timer.Interval je hodnota parametru Timeout) a odblokuje pracoviště. Dále když dojdou nějaké data, dojde ke kontrole, zda se jedná o Command (SGMLState.NotHandled => data zpracuje nějaký další modul na levelu). Když dojdou data typu SerialNo dojde k zařazení těchto dat do fronty (Session.SetNextData(data)). Pokud dojdou jakákoli jiná data, tak dojde k blokaci pracoviště, zalogování a nastavení SGMLState - Fail a Handled
Pro implementátory - Popis funkce a logiky modulu EnqueueDataOnTrigger ve spojitosti s modulem ScannerTrigger
Moduly ScannerTrigger a EnqueueDataOnTrigger se dají na stejný level ve skriptu! Nastavit parametry obou modulů (jak jsou popsány v kapitole Parametry modulu ...). Když dojde TTL s hodnotou rovno hodnotě v parametru IOPortWaitStates, tak dojde k odeslání dat na snímače a ke spuštění časovače s délkou intervalu podle parametru Timeout. - Pokud dojdou data typu command, tak tyto data modul EnqueueDataOnTrigger propustí dál na daném levelu. - Pokud dojdou data jiná než SerialNo nebo Command, tak dojde k zahlášení chybové zprávy a k blokaci. - Pokud nedojdou data v nadefinovanem intervalu, tak dojde k zablokovani podle stavů nadefinovaných v coreovém modulu IOPortBlockerService. - Pokud dojdou data v nadefinovaném intervalu a jsou typu SerialNo, tak se tyto data znovu zařadí do bufferu dat (tzn. na dalším levelu je může zpracovat nějaký další modul)
Pro programátory - popis jednoduchého použití Messengeru
1.Nadefinujete si třídu, která bude fungovat jako zpráva (pokud zpráva funguje pouze jako event, tak se nemusí deklarovat žádné property třídy ani
parametry konstruktoru).
2. V modulu, z kama chcete poslat zprávu
- Session.Messenger.Send