Sdílet prostřednictvím


Dokumentace ke správě událostí (POS pro .NET v1.14 SDK)

Správa událostí představuje jeden z klíčových aspektů programování aplikací pro Microsoft Point of Service pro .NET (POS pro .NET). Veškerý vstup v systému POS pro .NET je řízený událostmi a každý segment platformy POS pro architekturu .NET používá události ke komunikaci s ostatními aplikacemi a objekty služby.

Model zpracování řízený událostmi

Vstup řízený událostmi začíná, když připojené zařízení POS přijímá vstup dat. Pokud je toto zařízení povolené ( DeviceEnabled vlastnost je nastavená na hodnotu true), budou přijatá data zařazena do fronty jako událost DataEvent a odeslána do aplikace. Události se doručují prvním způsobem interním vláknem služby. Těsně před vyvolání této události může objekt služby použít metodu PreFireEvent k aktualizaci vlastností před odesláním této události.

Po přijetí dat události se zařízení automaticky zakáže (nastavení Vlastnosti DeviceEnabled na false), pokud je vlastnost AutoDisable nastavena na true. Zařízení sice není zakázané, ale nemůže zařadit nový vstup do fronty a pokud je to možné, fyzické zařízení bude zakázané.

Když je aplikace připravena přijímat vstup ze zařízení, nastaví DataEventEnabled vlastnost true. Aplikace pak začne přijímat události DataEvent zařazené do fronty, i když byly tyto události DataEvent zařazeny do fronty předtím, než byla vlastnost DataEventEnabled nastavena na hodnotu true.

Další datové události mohou být zakázány nastavením Vlastnosti DataEventEnabled nebo FreezeEvents vlastnosti na false. To způsobí, že se později vstupní data zařadí do fronty, zatímco aplikace zpracuje aktuální vstup a přidružené vlastnosti. Když je aplikace připravena na více dat, může znovu povolit události nastavením DataEventEnabled na hodnotu true.

Sdílení vstupu řízeného událostmi a zařízení

Pokud je vstupní zařízení výhradním použitím, musí aplikace deklarovat i povolit zařízení, než ho použije ke čtení vstupu.

Pokud je zařízení sdíletelné, musí jedna nebo více aplikací otevřít a povolit zařízení, než ho použije ke čtení vstupu. Aplikace musí volat metodu deklarace identity , aby požádala o výhradní přístup k zařízení předtím, než objekt služby odešle data do zařízení pomocí DataEvent. Pokud se přijme vstup řízený událostmi, ale zařízení zůstane nezašifrované, vstup se ukládá do vyrovnávací paměti, dokud aplikace nehlásí zařízení a vlastnost DataEventEnabled je nastavena na hodnotu true. Toto chování podporuje uspořádané sdílení zařízení mezi více aplikacemi a efektivně předává vstupní fokus mezi nimi.

Vstup řízený událostmi a zpracování chyb

Zařízení zadá chybový stav, pokud při příjmu vstupu řízeného událostí dojde k chybě. Potom zařadí do fronty událost ErrorEvent (která obsahuje InputData nebo InputErrorEvent loci). Tyto události nejsou doručeny, dokud DataEventEnabled vlastnost není nastavena na hodnotu true , aby se zajistilo pořadí aplikace sekvencování. Každá hodnota ErrorEvent označuje, která z těchto dvou možných umístění chyb odpovídá:

  • InputData – používá se, pokud došlo k chybě, když se jedna nebo více událostí DataEvent zařadí do fronty. ErrorEvent přeskočí na hlavu fronty událostí pro okamžité zpracování, aby aplikace okamžitě reagovala vymazáním vstupu nebo upozorňováním uživatele na chybu. Pak dokončete zpracování vstupu ve vyrovnávací paměti.
  • Vstup – používá se, pokud došlo k chybě a nejsou k dispozici žádná data. Pokud se při výskytu chyby zařadí vstupní data do fronty, zařadí se nejprve do fronty a doručí se zbývající dataEvent ve frontě. Nakonec se odešle chyba ErrorEvent se vstupní hodnotou, která indikuje, že fronta je prázdná a nejsou k dispozici žádná data. Je důležité si všimnout, že pokud byla doručena chyba ErrorEvent s hodnotou InputData a obslužná rutina události aplikace odpověděla s hodnotou Clear , tento InputDataErrorEvent se nedoručí. Obvykle se tato chyba zadává na konci fronty událostí.

Pokud dojde k některé z následujících situací, může zařízení ukončit stav Chyba:

  • Aplikace vrátí chybu InputErrorEvent. Aplikace vrátí z InputDataErrorEvent s Clear hodnotu ErrorResponse vlastnost.
  • Aplikace volá Metodu ClearInput .

U některých zařízení musí aplikace volat metodu pro zahájení vstupu řízeného událostmi. Jakmile objekt služby přijme vstup, obvykle nebude přijat žádný další vstup, dokud metoda nebude znovu volána. Mezi příklady zařízení, která používají tuto variantu vstupu řízeného událostmi, označovaná také jako asynchronní vstup, patří magnetické rozpoznávání znaků rukopisu (MICR) a zařízení Sign Capture. Vlastnost DataCount lze přečíst a získat počet událostí DataEvent ve frontě.

Veškerý vstup ve frontě lze odstranit voláním ClearInput metody. ClearInput se může volat po deklaraci identity pro zařízení s výhradním použitím nebo otevřít pro sdílená zařízení.

Obecný vstupní model řízený událostmi nebrání definici tříd zařízení, které obsahují metody nebo vlastnosti, které vracejí vstupní data přímo. Příkladem této varianty vstupu řízeného událostmi, označovaného také jako synchronní vstup, je zařízení Keylock .

Event Types

POS pro .NET implementuje události Unified Point Of Service (UnifiedPOS) jako standardní události .NET s delegáty vícesměrového vysílání. Události informují o různých aktivitách nebo změnách zařízení, například při přidání nebo odebrání zařízení. Následující tabulka uvádí typy událostí.

Událost Popis
DataEvent Událost vyvolaná objektem služby, která aplikaci oznámí, že jsou k dispozici vstupní data.
ErrorEvent Událost vyvolaná objektem služby, která aplikaci oznámí, že došlo k chybě zařízení a že je nutná vhodná odpověď aplikace ke zpracování chybového stavu.
StatusUpdateEvent Událost vyvolaná objektem služby, která upozorní aplikaci na změnu stavu zařízení.
OutputCompleteEvent Událost vyvolaná objektem služby, která aplikaci oznámí, že se úspěšně dokončil výstupní požadavek ve frontě.
DirectIOEvent Událost vyvolaná objektem služby za účelem přímé komunikace s aplikací.

Objekt služby musí tyto události naskládat do interně vytvořené a spravované fronty. Události se doručují jako první, první a doručují se interním vláknem služby.

Následující podmínky způsobují zpoždění doručení události, dokud se podmínka nenapraví:

  • Aplikace nastavila FreezeEvents vlastnost true. Vlastnost FreezeEvents umožňuje, aby události byly zařazeny do fronty , ale brání jejich doručení, dokud je Funkce FreezeEvents nastavena na hodnotu false.
  • Událost je DataEvent nebo vstupní ErrorEvent , ale vlastnost DataEventEnabled je false.

Pravidla pro správu front událostí jsou následující:

  • Zařízení může zařadí nové události do fronty jenom v době, kdy je zařízení povolené.
  • Zařízení doručuje události zařazené do fronty, dokud aplikace nevolá metodu Close nebo pro zařízení s výhradním použitím metodu Release . Při zavolání těchto metod se odstraní všechny zbývající události ve frontě.
  • ClearInput metoda vymaže DataEvents a vstupní DeviceErrorEvents (ErrorLocus = Input nebo InputData).
  • Metoda ClearOutput vymaže výstup DeviceErrorEvents (ErrorLocus = Output).

Viz také

Reference

Koncepty