Partager via


Modèles de sortie d’appareil (documentation du SDK POS pour .NET v1.14)

Le modèle de sortie Unified Point Of Service (UnifiedPOS) se compose de deux types de sortie : synchrone et asynchrone. Un type d’appareil POS peut prendre en charge un ou les deux types, ou aucun type.

Sortie synchrone

Lorsqu’une application utilise une méthode synchrone spécifique du type d’appareil pour écrire une sortie, l’opération d’écriture a lieu sur le thread qui a appelé la méthode. L’objet de service ne peut pas être retourné tant que l’opération d’écriture ne s’est pas terminée ou a échoué.

L’utilisation de la sortie synchrone est simple, mais peut avoir un impact sur les performances de l’application si la sortie ne peut pas être effectuée relativement rapidement. Les développeurs d’objets de service doivent en tenir compte.

Sortie asynchrone

Certains types d’appareils POS prennent en charge la sortie asynchrone. Dans le modèle de sortie asynchrone, l’application appelle l’objet de service pour demander que les données soient sorties sur l’appareil. Contrairement au modèle synchrone, toutefois, l’objet de service ne doit pas attendre la fin de l’opération d’écriture. Au lieu de cela, il doit retourner le contrôle à l’application dès que possible. Lorsqu’un objet de service reçoit une demande de l’application, il doit effectuer les opérations suivantes :

  • Si l’appareil physique n’est pas en mesure de recevoir des données, l’objet de service doit les mettre en mémoire tampon jusqu’à ce que l’appareil soit prêt.
  • Définissez la propriété OutputId sur un identificateur pour cette demande, à utiliser lors des événements futurs envoyés à l’application.
  • Retournez une valeur dès que possible.

L’objet de service doit ensuite attendre que l’appareil termine la demande. En règle générale, cela se fait avec un thread distinct, géré par l’objet de service, qui surveille le matériel. Une fois la demande correctement terminée, un événement OutputCompleteEvent, avec OutputEventArgs.OutputId défini sur l’identificateur précédemment spécifié, est mis en file d’attente pour remise à l’application.

File d’attente managée d’objet de service

La bibliothèque de classes POS pour .NET offre une prise en charge de la sortie asynchrone, ce qui est suffisant pour presque tous les scénarios impliquant des objets de service.

Toutefois, il existe certains scénarios dans lesquels les développeurs d’objets de service peuvent avoir besoin d’implémenter leur propre gestion de sortie asynchrone. Le scénario principal consiste à prendre en charge les appareils qui prennent en charge les files d’attente d’impression matérielles. Dans ce cas, l’objet de service définit UseExternalPrintQueue sur true, remplace la méthode PreQueuePrintData et implémente son propre mécanisme de file d’attente.

Lorsque UseExternalPrintQueue a la valeur true, la classe Base n’ajoute plus les demandes d’impression à sa file d’attente asynchrone interne. Il appartient donc aux développeurs d’objets de service de mettre en file d’attente les données de la manière qui leur convient. Pour ce faire, ces derniers utilisent souvent les fonctionnalités de mise en file d’attente d’impression matérielle de l’appareil. La classe Base prévalide toujours les mêmes demandes d’impression, mais n’effectue aucun traitement supplémentaire.

Dans ces cas, l’objet de service est responsable des opérations suivantes :

  • Implémentation de sa propre logique de mise en file d’attente.
  • Envoi de StatusUpdateEvents pour des opérations réussies.
  • Envoi de ErrorEvents pour les opérations asynchrones ayant échoué et gestion de la nouvelle tentative.
  • Mise à jour de la propriété d’état.
  • Toutes les autres opérations asynchrones définies dans la spécification UnifiedPOS.

Voir aussi

Tâches

Autres ressources