Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La plupart des applications de point de vente utilisent un tiroir-caisse pour les transactions financières. Les développeurs d’objets de service peuvent utiliser la classe Microsoft Point of Service pour .NET (POS pour .NET), CashDrawerBase, pour implémenter facilement un objet de service CashDrawer conforme à Unified Point Of Service (UnifiedPOS).
Fonctionnalités
Tous les objets de service CashDrawer doivent prendre en charge, au minimum, la possibilité d’ouvrir le tiroir. Pour ce faire, implémentez la méthode abstraite CashDrawerBase.OpenDrawerImpl dans votre classe Objet de service.
L’objet de service peut également être en mesure de déterminer si le tiroir-caisse est ouvert ou non. Si l’objet de service a cette fonctionnalité, il doit définir la propriété CapStatus sur true. Si CapStatus a la valeur true, les applications peuvent examiner l’état de l’appareil à l’aide de la propriété DrawerOpened. Si CapStatus n’est pas défini, DrawerOpened sera toujours défini sur false et toute tentative de définition sur true génère une exception.
Si CapStatus a été défini sur true, l’objet de service doit mettre à jour la propriété DrawerOpened . Vous devez le faire dans l’implémentation de l’objet de service de la méthode OpenDrawerImpl. Un thread d’arrière-plan qui surveille l’état de l’appareil peut également définir la propriété DrawerOpened .
Événements CashDrawer
Si l’objet de service a défini la propriété CapStatus sur true, CashDrawerBasic.DrawerOpened envoie un StatusUpdateEvent à l’application.
En fonction de l’appareil de tiroir-caisse et de l’implémentation de l’objet service, l’objet de service peut avoir besoin d’un thread distinct pour surveiller l’état du matériel et signaler les modifications de façon asynchrone. Cela peut être nécessaire, par exemple, si le tiroir-caisse peut être ouvert manuellement par l’opérateur et que l’application doit être avertie.
L’objet de service CashDrawer peut également envoyer un DirectIOEvent à l’application. DirectIOEvent est utilisé pour envoyer à l’application des données spécifiques à l’implémentation d’objet de service et peut donc être incompatible avec certaines applications. Pour plus d’informations, consultez Entrée d’appareil et événements.
Partage d’appareil
Un tiroir-caisse est un appareil partageable. Plusieurs applications seront en mesure d’ouvrir, d’activer et d’accéder à toutes ses propriétés et méthodes. Toutefois, une fois qu’une application a sollicité l’appareil, seule cette application peut appeler CashDrawerBase.OpenDrawer ou CashDrawerBase.WaitForDrawerClose. Une exception PosException avec ErrorCode.Claimed est levée si d’autres applications tentent d’appeler ces méthodes.
Si plusieurs applications ont ouvert et activé l’appareil, chaque application reçoit tous les événements envoyés par l’objet de service.
Le code nécessaire pour prendre en charge cette fonctionnalité est implémenté dans la classe POS pour .NET CashDrawerBase .
Tiroirs-caisses multiples
Il est possible d’avoir plusieurs tiroirs-caisses attachés à l’ordinateur et utilisant le même port matériel. Dans de telles situations, un objet de service CashDrawer peut savoir à quel tiroir-caisse il n’est pas spécifiquement connecté. Si l’objet de service peut distinguer l’appareil de tiroir-caisse auquel il est connecté, il doit définir la propriété CapStatusMultiDrawerDetect sur true. La valeur de cette propriété influence le comportement de la propriété DrawerOpened et de la méthode WaitForDrawerClose.
Si CapStatusMultiDrawerDetect a la valeur false, la valeur DrawerOpened sur true indique qu’au moins un tiroir est ouvert. L’application n’est pas en mesure de déterminer si un tiroir en particulier est ouvert.
Si CapStatusMultiDrawerDetect a la valeur false, la méthode WaitForDrawerClose attend que tous les tiroirs-caisses ouverts soient fermés avant de revenir à l’application.