Flux d’impression
Le pilote d’imprimante PC revient intentionnellement rapidement de/print. Les E/S réelles de l’imprimante se produisent dans le programme de travail en arrière-plan de l’imprimante cible.
Flux de bout en bout
- La console Plato génère un reçu, un ticket ou un rapport dans un blob PNG.
- L’adaptateur Console
WIN_DRIVERconvertit l’image en lignes raster noir/blanc. - Les lignes raster sont divisées en morceaux de 128 lignes.
- Chaque morceau est codé en tant que commande raster ESC/POS et codé en base64.
- La console envoie
POST /printavecip_address,portetchunks. - Le pilote encapsule les morceaux avec de petits délais, ajoute l’alimentation/la coupe et ajoute éventuellement des commandes sonores.
- Le travail est ajouté à la file d’attente BullMQ de cette imprimante.
- Le travailleur ouvre un socket TCP sur l’imprimante.
- Le travailleur envoie l’initialisation ESC/POS, puis chaque morceau.
- Le travailleur ferme la connexion de l’imprimante après le travail.
Blocage de la console
L’adaptateur de console utilise :
Le navigateur envoie des morceaux raster déjà codés. Le pilote ne restitue pas le HTML.
Emballage de fragments de pilotes
receipt-encoder.ts transforme les blocs entrants en blocs de tâches :
- Chaque morceau entrant est décodé en base64.
- Chaque morceau d’impression obtient
delayAfterMs: 25. - Une commande d’avance et de coupe partielle est annexée.
- Si
beepest vrai, 18 commandes sonores sont ajoutées. - Chaque morceau de bip a
delayAfterMs: 150.
Commandes ESC/POS
Cycle de vie des sockets
Le travailleur actuel ouvre et ferme la connexion de l’imprimante pour chaque tâche.
Il existe également un minuteur de libération inactive de
3000ms, mais le chemin de processus actuel ferme la connexion immédiatement après chaque tâche réussie.
Chemin d’échec
Si l’ouverture ou l’écriture échoue :- L’imprimante est marquée
offline. - La douille est libérée/détruite.
- Le travail BullMQ échoue.
- BullMQ réessaye après
queue.retryDelayMs. - Lorsque l’imprimante est à nouveau atteinte, les travaux de nouvelle tentative différée sont promus, à moins qu’ils ne soient intentionnellement planifiés avec un futur
runAt.
Sondage d’état
POST /status peut sonder l’imprimante uniquement lorsque le travail en file d’attente n’est pas actif. Cela évite d’ouvrir une prise de sonde alors que la même imprimante est en train d’imprimer.