Partilhar via


Implementação do CashDrawer (Documentação do SDK do PDV para .NET v1.14)

A maioria dos aplicativos de ponto de venda usará uma gaveta de dinheiro para transações financeiras. Os desenvolvedores de objetos de serviço podem usar a classe Microsoft Point of Service for .NET (POS para .NET), CashDrawerBasepara implementar facilmente um objeto de serviço CashDrawer compatível com Unified Point Of Service (UnifiedPOS).

Capacidades

Todos os Objetos de Serviço CashDrawer devem suportar, no mínimo, a capacidade de abrir a gaveta. Isso é feito implementando o método abstrato, CashDrawerBase.OpenDrawerImpl, em sua classe Service Object.

O Objeto de Serviço também pode ser capaz de determinar se a gaveta de dinheiro está aberta ou não. Se o Service Object tiver esse recurso, ele deverá definir a propriedade CapStatus como true. Se CapStatus for true, os aplicativos poderão examinar o estado do dispositivo usando a propriedade DrawerOpened . Se CapStatus não estiver definido, DrawerOpened sempre será definido como false e qualquer tentativa de defini-lo como true gerará uma exceção.

Se CapStatus tiver sido definido como true, o Service Object precisará atualizar a propriedade DrawerOpened . Você deve fazer isso na implementação do objeto de serviço do método OpenDrawerImpl . Um thread em segundo plano monitorando o estado do dispositivo também pode definir a propriedade DrawerOpened .

Eventos CashDrawer

Se o Service Object tiver definido a propriedade CapStatus como true, CashDrawerBasic.DrawerOpened enviará um StatusUpdateEvent para o aplicativo.

Dependendo do dispositivo de gaveta de dinheiro e da implementação do Objeto de Serviço, o Objeto de Serviço pode precisar de um thread separado para monitorar o estado do hardware e relatar quaisquer alterações de forma assíncrona. Tal seria necessário, por exemplo, se a gaveta de dinheiro pudesse ser aberta manualmente pelo operador e o pedido tivesse de ser notificado.

O objeto de serviço CashDrawer também pode enviar um DirectIOEvent para o aplicativo. O DirectIOEvent é usado para enviar dados para o aplicativo que é específico para a implementação do objeto de serviço e, portanto, pode ser incompatível com alguns aplicativos. Para obter mais informações, consulte Entrada de dispositivo e eventos.

Compartilhamento de dispositivos

Uma gaveta de dinheiro é um dispositivo compartilhável. Vários aplicativos poderão abrir, habilitar e acessar todas as suas propriedades e métodos. No entanto, uma vez que um aplicativo tenha reivindicado o dispositivo, apenas esse aplicativo pode chamar CashDrawerBase.OpenDrawer ou CashDrawerBase.WaitForDrawerClose. Um PosException com ErrorCode.Claims será lançado se outros aplicativos tentarem chamar esses métodos.

Se mais de um aplicativo tiver aberto e habilitado o dispositivo, cada aplicativo receberá todos os eventos enviados pelo Objeto de Serviço.

O código necessário para suportar esse recurso é implementado no POS para .NET CashDrawerBase classe.

Várias gavetas de dinheiro

É possível ter mais de uma gaveta de dinheiro presa ao computador e usando a mesma porta de hardware. Em tais situações, um Objeto de Serviço CashDrawer pode saber a qual gaveta de dinheiro não está especificamente conectado. Se o Objeto de Serviço puder distinguir a qual dispositivo de gaveta de dinheiro está conectado, ele deverá definir a propriedade CapStatusMultiDrawerDetect como true. O valor dessa propriedade influenciará o comportamento da propriedade DrawerOpened e do método WaitForDrawerClose .

Se CapStatusMultiDrawerDetect estiver definido como false, um valor DrawerOpened de true indica que pelo menos uma gaveta está aberta. O pedido não é capaz de determinar se alguma gaveta em particular está aberta.

Se CapStatusMultiDrawerDetect estiver definido como false, o método WaitForDrawerClose aguardará que todas as gavetas de dinheiro abertas sejam fechadas antes de retornar ao aplicativo.

Consulte também