Partilhar via


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

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

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.

Usar a saída síncrona é simples, mas pode afetar o desempenho do aplicativo se a saída não puder ser concluída com relativa rapidez. Os desenvolvedores de objetos de serviço devem levar isso em consideração.

Saída assíncrona

Certos tipos de dispositivos POS suportam saída assíncrona. No modelo de saída assíncrona, o aplicativo chama o objeto de serviço para solicitar que os dados sejam enviados para o dispositivo. Ao contrário do modelo síncrono, no entanto, o objeto de serviço não deve esperar a conclusão da operação de gravação; em vez disso, ele deve retornar o controle para o aplicativo o mais rápido possível. Quando um objeto de serviço recebe uma solicitação do aplicativo, ele deve fazer o seguinte:

  • Se o dispositivo físico não for capaz de receber dados, o objeto de serviço deve armazená-lo em buffer na memória até que o dispositivo esteja pronto.
  • Defina a propriedade OutputId como um identificador para essa solicitação, a ser usada durante eventos futuros que são enviados para o aplicativo.
  • Volte o mais rápido 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. Quando a solicitação é concluída com êxito, um evento OutputCompleteEvent , com OutputEventArgs.OutputId definido como o identificador especificado anteriormente, é enfileirado para entrega ao aplicativo.

Fila gerenciada por objeto de serviço

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

Há, no entanto, alguns cenários em que os desenvolvedores de objetos de serviço podem precisar implementar sua própria manipulação de saída assíncrona. O cenário principal é oferecer suporte a dispositivos que oferecem suporte a filas de impressão baseadas em hardware. Nesse caso, o Service Object 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 Service Object enfileirar os dados da maneira necessária. Isso geralmente é feito usando os recursos de enfileiramento de impressão de hardware do dispositivo. A classe Base ainda pré-valida as mesmas solicitações de impressão, mas não faz nenhum processamento adicional.

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

  • Implementando sua própria lógica de fila.
  • Envio de StatusUpdateEvents para operações bem-sucedidas.
  • Enviando ErrorEvents para operações assíncronas com falha e manipulando a nova tentativa.
  • Atualização da propriedade state.
  • Todas as outras operações assíncronas definidas na especificação UnifiedPOS.

Consulte Também

Tarefas

Outros Recursos