Compartilhar via


Modelos de saída de dispositivo (POS para documentação do SDK do .NET v1.14)

O modelo de saída do Ponto de Serviço Unificado (UnifiedPOS) consiste em dois tipos de saída; síncrona e assíncrona. Um tipo de dispositivo POS pode dar suporte a um ou ambos os tipos ou a nenhum tipo.

Saída síncrona

Quando um aplicativo usa um método síncrono específico do tipo de dispositivo para gravar a saída, a operação de gravação ocorre no mesmo thread que chamou o método. O Objeto de Serviço pode não retornar até que a operação de gravação tenha sido concluída ou tenha falhado.

O uso da saída síncrona é simples, mas pode afetar potencialmente o desempenho do aplicativo se a saída não puder ser concluída relativamente rapidamente. Os desenvolvedores do Objeto de Serviço devem levar isso em conta.

Saída assíncrona

Determinados tipos de dispositivo POS dão suporte à saída assíncrona. No modelo de saída assíncrono, o aplicativo chama o Objeto de Serviço para solicitar que os dados sejam gerados para o dispositivo. Ao contrário do modelo síncrono, no entanto, o Objeto de Serviço não deve aguardar a conclusão da operação de gravação, em vez disso, ele deve retornar o controle para o aplicativo, assim que possível. Quando um Objeto de Serviço receber uma solicitação do aplicativo, ele deverá fazer o seguinte:

  • Se o dispositivo físico não puder receber dados, o Objeto de Serviço deverá armazenar em buffer na memória até que o dispositivo esteja pronto.
  • Defina a propriedade OutputId como um identificador para essa solicitação, para ser usada durante eventos futuros que são enviados para o aplicativo.
  • Retorne assim que possível.

O Objeto de Serviço deve aguardar até que o dispositivo conclua a solicitação. Normalmente, isso é feito com um thread separado, gerenciado pelo Objeto de Serviço, que monitora o hardware. Depois que a solicitação for concluída com êxito, um evento OutputCompleteEvent, com OutputEventArgs.OutputId definido como o identificador especificado anteriormente, será enfileirado para entrega ao aplicativo.

Fila Gerenciada do Objeto de Serviço

A biblioteca de classes POS para .NET oferece suporte para saída assíncrona, o que é suficiente para quase todos os cenários de Objeto de Serviço.

No entanto, há alguns cenários em que os desenvolvedores do Objeto de Serviço podem precisar implementar sua própria manipulação de saída assíncrona. O cenário principal é dar suporte a dispositivos que dão suporte a filas de impressão baseadas em hardware. Nesse caso, o Objeto de Serviço define UseExternalPrintQueue como true, substitui o método PreQueuePrintData e implementa seu próprio mecanismo de fila.

Quando UseExternalPrintQueue é definido como true, a classe Base não adiciona mais as solicitações de impressão à sua fila assíncrona interna, portanto, cabe aos desenvolvedores do Objeto de Serviço enfileirar dados da maneira que eles precisarem. Isso geralmente é feito usando os recursos de enfileiramento de impressão de hardware do dispositivo. A classe Base ainda pré-avalia as mesmas solicitações de impressão, mas não faz nenhum processamento adicional.

Nesses casos, o Objeto de Serviço será responsável pelo seguinte:

  • Implementar sua própria lógica de enfileiramento.
  • Enviar StatusUpdateEvents para operações bem-sucedidas.
  • Enviar ErrorEvents para operações assíncronas com falha e manipular a repetição.
  • Atualizar a propriedade state.
  • Todas as outras operações assíncronas definidas na especificação UnifiedPOS.

Consulte Também

Tarefas

Outros recursos