Modul OrderTerminalData

Parametry modulu

Modul obsahuje čtyři parametry ovlivňující chování modulu. BlockDef: která z BlockDefinic v coreovém modulu IOPortBlockerService se má použít. EnabledTerminalPorts: definuje čísla portů podle coreového modulu Terminal, ze kterých budou data přijmuty oddělenými čárkou (,) !!!DŮLEŽITÉ!!! u parametru EnabledTerminalPorts záleží na pořadí zadaných portů MaxScannerDelay: maximální doba, po kterou modul čeká na další všechny data po přijmutí prvních správných dat (množství dat je definováno počtem portů v EnabledTerminal ports) NoReadDataValue: hodnota NoRead dat, která očekává modul

Funkce modulu

Během inicializace pracoviště (metoda OnSetParameters) dojde k vytvoření prázdného listu typu SGRecievedData podle počtu terminálů v parametru EnabledTerminalPorts. Když dojdou data, tak zkontroluju, jestli se nejedná o nadefinovanou hodnotu NoReadDataValue. Pokud ano, tak zkontroluju číslo portu, ze kterého přišly data (data.TerminalPort.Port) ku nadefinovaným hodnotám v parametru EnabledTerminalPorts a pokud i tato podmínka je splněna, tak tyto data přidám do listu m_arrCreatedRecievedData. Data z jiných než nadefinovaných portů jsou "puštěny" do dalších modulů. Po splnění podmínky ohledně portu se spustí časovač s intervalem podle parametru MaxScannerDelay. Během tohoto intervalu musí přijít data, která musí opět splnit výše zmíněné podmínky, aby byly přidány do listu m_arrCreatedRecievedData. Po načtení počtu dat odpovídajícímu počtu portů v parametru EnabledTerminalPorts dojde k seřazení dat podle nastavené hodnoty parametru EnabledTerminalPorts a k následnému zařazení všech těchto dat do standartní fronty dat. Na implementátorech už závisí správné poskládání následujících modulů.

Příklad poskládání skriptu a nastavení parametrů

OrderTerminalData script

Obr.č.1 - Ukázka skriptu s použitím modulu OrderTerminalData i s jeho nastavením vidíme, že v parametru EnabledTerminalPorts máme nastavenou hodnotu 1,2. Ta nám říká, že jsou tento modul zpracuje data pouze z těchto dvou portů (pozn. o jaký sériový port se reálně jedná zjistí implementátor v modulu Terminal) v pořadí první budou data z portu č.1 a druhé z portu č.2. Po zpracování všech dat, jak je popsáno výše dojde k přeposlání těchto dat dále do skriptu. Jelikož u tohoto pracoviště víme, že z prvního portu (ve výrobě je to pravděpodobně stacionární kamera) mi dojde číslo dílu, ke kterému chcu připojit další díl, tak hned za modul OrderTerminalData dám modul PartStart. Obodbně podle zadání víme, že z druhého portu dojde pouze SN dílu, který se má připojit k již nastartovanému dílu, tudíž dáme použijeme modul PartJoinStart až na dalším levelu za modulem PartStart.