Passer au contenu principal

Intégration de la console

La console Plato utilise l’adaptateur d’imprimante WIN_DRIVER pour le pilote d’imprimante PC.

Enregistrement de l’imprimante

La console stocke les imprimantes dans une base de données IndexedDB nommée printer-database. Les enregistrements de l’imprimante comprennent :
  • type d’imprimante
  • statut
  • dernière erreur
  • configuration
  • largeur du papier
  • catégories
  • types de commandes
  • logo
Type pertinent :
type PrinterType =
  | "EPSON"
  | "WIN_DRIVER"
  | "USB"
  | "BUILT_IN"
  | "ANDROID_DRIVER"
  | "SUNMI";

Pilote URL

L’adaptateur WIN_DRIVER construit sa base URL à partir de la configuration de l’imprimante :
http://<driverIpAddress>:<driverPort>
https://<driverIpAddress>:<driverPort>
Si driverPort est vide, l’adaptateur omet le port. Ceci est utile pour HTTPS sur le port 443.

Cible de l’imprimante

L’adaptateur envoie la cible de l’imprimante physique séparément du pilote URL.
Champ de configurationChamp de demandeRemarques
driverIpAddressHôte URLMachine en marche plato-printer.exe.
driverPortPort URLPort du pilote HTTP/HTTPS.
driverUseHttpsProtocole URLUtilise https lorsque vrai.
ipAddressip_addressIP de l’imprimante physique.
portportPort TCP de l’imprimante physique.
vendorvendor_idID du fournisseur mappé.
productIdproduct_idEnvoyé pour compatibilité.
beepbeepActive la séquence de bips post-impression.
Si l’adresse IP de l’imprimante est manquante ou égale à 192.168.0.0, l’adaptateur envoie ip_address: null et port: null, que le pilote actuel rejette avec Missing printer address.

ID des fournisseurs

L’adaptateur mappe les fournisseurs :
FournisseuseIdentifiant du fournisseur
EPSON0x04b8
BIRCH0x1fc9
PHILIPS0x0471
SUNMI0x04b8
OSCAR0x04b8

Préparation de l’impression

Flux d’impression de la console :
  1. Rendre le DOM en blob PNG.
  2. Chargez le blob dans le canevas.
  3. Convertissez les pixels du canevas en lignes raster noir/blanc.
  4. Divisez les lignes raster en morceaux de 128 lignes.
  5. Encodez chaque morceau en octets raster ESC/POS.
  6. Base64 encode chaque bloc d’octets.
  7. Envoyez POST /print.
Le pilote ne reçoit jamais de HTML. Il reçoit des morceaux ESC/POS imprimables.

File d’attente du navigateur

La console dispose d’une file d’attente de navigateur locale avant que les requêtes n’atteignent le pilote du PC.
  • Les travaux sont stockés dans IndexedDB.
  • Les travaux passent de pending à printing.
  • Les tâches ayant échoué sont marquées failed.
  • Un travail printing obsolète est récupéré après 60 secondes.
  • Les tâches planifiées sont vérifiées toutes les 30 secondes.
  • Les tâches ayant échoué sont réessayées toutes les 60 secondes.
Le pilote d’imprimante PC possède sa propre file d’attente Redis une fois la demande HTTP acceptée. Cela signifie qu’il y a deux files d’attente :
File d’attenteEmplacementBut
File d’attente du navigateurPlato Console IndexedDBConserve les travaux d’impression côté POS jusqu’à ce qu’un pilote les accepte.
File d’attente des pilotesRedis/BullMQConserve les travaux acceptés jusqu’à ce que l’imprimante physique les reçoive.

Cartographie des statuts

La console appelle POST /status.
  • L’échec de HTTP renvoie OFFLINE.
  • La réponse avec ok: true et status et non offline renvoie ONLINE.
  • Les autres réponses du pilote sont stockées sous lastError.

Tiroir-caisse

La console appelle POST /cash-drawer pour chaque imprimante en ligne configurée avec un tiroir-caisse.