Compartilhar via


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

A maioria dos aplicativos de ponto de venda usará uma caixa registradora para transações financeiras. Os desenvolvedores do Objeto de Serviço podem usar a classe de Ponto de Serviço Microsoft para .NET (POS para .NET), CashDrawerBase, para implementar facilmente um Objeto de Serviço de Ponto de Serviço Unificado (UnifiedPOS) compatível com o CashDrawer.

Funcionalidades

Todos os Objetos de Serviço do CashDrawer devem dar suporte, no mínimo, à capacidade de abrir a caixa. Isso é feito implementando o método abstrato , CashDrawerBase.OpenDrawerImpl, na sua classe de Objeto de Serviço.

O Objeto de Serviço também pode ser capaz de determinar se a caixa registradora está aberta ou não. Se o Objeto de Serviço tiver essa funcionalidade, 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 Objeto de Serviço 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 que monitora o estado do dispositivo também pode definir a propriedade DrawerOpened.

Eventos do CashDrawer

Se o Objeto de Serviço tiver definido a propriedade CapStatus como true, CashDrawerBasic.DrawerOpened enviará um StatusUpdateEvent para o aplicativo.

Dependendo do dispositivo de caixa registradora 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. Isso seria necessário, por exemplo, se a caixa registradora pudesse ser aberta manualmente pelo operador e o aplicativo precisasse 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 específicos para a implementação do Objeto de Serviço e, portanto, pode ser incompatível com alguns aplicativos. Para saber mais, confira Entrada e eventos do dispositivo.

Compartilhamento de dispositivos

Uma caixa registradora é um dispositivo compartilhável. Vários aplicativos poderão abrir, habilitar e acessar todas as suas propriedades e métodos. No entanto, depois que um aplicativo tiver reivindicado o dispositivo, somente esse aplicativo poderá chamar CashDrawerBase.OpenDrawer ou CashDrawerBase.WaitForDrawerClose. Uma PosException com ErrorCode.Claimed será gerada 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 dar suporte a esse recurso é implementado na classe POS para .NET CashDrawerBase .

Várias caixas registradoras

É possível ter mais de uma caixa registradora anexada ao computador e usando a mesma porta de hardware. Nessas situações, um Objeto de Serviço CashDrawer pode saber a qual caixa registradora ele não está especificamente conectado. Se o Objeto de Serviço puder distinguir a qual dispositivo de caixa registradora ele 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 indicará que pelo menos uma caixa está aberta. O aplicativo não é capaz de determinar se alguma caixa em particular está aberta.

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

Confira também