Delen via


CashDrawer-implementatie (POS voor .NET v1.14 SDK-documentatie)

De meeste point-of-sale-toepassingen gebruiken een cash drawer voor financiële transacties. Ontwikkelaars van serviceobjecten kunnen de klasse CashDrawerBaseMicrosoft Point of Service voor .NET (POS voor .NET) gebruiken om eenvoudig een Unified Point Of Service-compatibel CashDrawer-serviceobject (UnifiedPOS) te implementeren.

Functies

Alle CashDrawer-serviceobjecten moeten minimaal de mogelijkheid bieden om de lade te openen. Dit wordt gedaan door de abstracte methode CashDrawerBase.OpenDrawerImpl te implementeren in uw serviceobjectklasse.

Het serviceobject kan ook bepalen of de kassalade open is of niet. Als het serviceobject deze mogelijkheid heeft, moet de eigenschap CapStatus worden ingesteld op true. Als CapStatus waar is, kunnen toepassingen de status van het apparaat onderzoeken met behulp van de eigenschap DrawerOpened. Als CapStatus niet is ingesteld, wordt DrawerOpened altijd ingesteld op onwaar en elke poging om deze in te stellen op true , genereert een uitzondering.

Als CapStatus is ingesteld op true, moet het serviceobject de eigenschap DrawerOpened bijwerken. U moet dit doen in de implementatie van het serviceobject van de OpenDrawerImpl-methode . Een achtergrondthread die de status van het apparaat bewaakt, kan ook de eigenschap DrawerOpened instellen.

CashDrawer-gebeurtenissen

Als het serviceobject de eigenschap CapStatus heeft ingesteld op true, stuurt CashDrawerBasic.DrawerOpened een StatusUpdateEvent naar de toepassing.

Afhankelijk van het kassaladeapparaat en de implementatie van het serviceobject, heeft het serviceobject mogelijk een afzonderlijke thread nodig om de status van de hardware te bewaken en eventuele wijzigingen asynchroon te rapporteren. Dit zou bijvoorbeeld nodig zijn als de kassalade handmatig door de exploitant kan worden geopend en de toepassing hiervan op de hoogte moet worden gesteld.

Het CashDrawer-serviceobject kan ook een DirectIOEvent naar de toepassing verzenden. De DirectIOEvent wordt gebruikt om gegevens te verzenden naar de toepassing die specifiek is voor de implementatie van het serviceobject en kan daarom niet compatibel zijn met sommige toepassingen. Zie Apparaatinvoer en -gebeurtenissen voor meer informatie.

Apparaat delen

Een kassalade is een deelbaar apparaat. Meerdere toepassingen kunnen alle eigenschappen en methoden openen, inschakelen en openen. Zodra een toepassing echter het apparaat heeft geclaimd, kan alleen die toepassing CashDrawerBase.OpenDrawer of CashDrawerBase.WaitForDrawerClose aanroepen. Er wordt een PosException met ErrorCode.Claimed gegenereerd als andere toepassingen proberen deze methoden aan te roepen.

Als meer dan één toepassing het apparaat heeft geopend en ingeschakeld, ontvangt elke toepassing alle gebeurtenissen die door het serviceobject worden verzonden.

De code die nodig is om deze functie te ondersteunen, wordt geïmplementeerd in de klasse POS for .NET CashDrawerBase .

Meerdere cash drawers

Het is mogelijk om meer dan één cashlade aan de computer te koppelen en dezelfde hardwarepoort te gebruiken. In dergelijke situaties kan een CashDrawer-serviceobject weten aan welke kassalade het niet specifiek is verbonden. Als het serviceobject kan onderscheiden op welk kassaladeapparaat het is verbonden, moet het de eigenschap CapStatusMultiDrawerDetect instellen op true. De waarde van deze eigenschap heeft invloed op het gedrag van de eigenschap DrawerOpened en de methode WaitForDrawerClose .

Als CapStatusMultiDrawerDetect is ingesteld op false, geeft een DrawerOpened-waarde van true aan dat ten minste één lade open is. De toepassing kan niet bepalen of een lade met name geopend is.

Als CapStatusMultiDrawerDetect is ingesteld op false, wacht de methode WaitForDrawerClose totdat alle geopende cashlades worden gesloten voordat ze terugkeren naar de toepassing.

Zie ook