Yazdırma Akışı
PC yazıcı sürücüsü kasıtlı olarak/print’den hızlı bir şekilde geri dönüyor. Gerçek yazıcı G/Ç’si, hedef yazıcının arka plan çalışanında gerçekleşir.
Uçtan Uca Akış
- Plato Konsolu bir PNG blobuna makbuz, bilet veya rapor işler.
- Konsol
WIN_DRIVERbağdaştırıcısı görüntüyü siyah/beyaz tarama satırlarına dönüştürür. - Raster satırları 128 satırlık parçalara bölünmüştür.
- Her parça bir ESC/POS raster komutu olarak kodlanır ve base64 olarak kodlanır.
- Konsol,
ip_address,portvechunksilePOST /print’yi gönderir. - Sürücü parçaları küçük gecikmelerle sarar, besleme/kesme ekler ve isteğe bağlı olarak bip sesi komutları ekler.
- İş, söz konusu yazıcının BullMQ kuyruğuna eklenir.
- Çalışan yazıcıya bir TCP yuvası açar.
- Çalışan ESC/POS başlatmayı ve ardından her parçayı gönderir.
- İşçi işten sonra yazıcı bağlantısını kapatır.
Konsol Parçalama
Konsol adaptörü şunları kullanır:
Tarayıcı önceden kodlanmış tarama parçaları gönderir. Sürücü HTML oluşturmuyor.
Sürücü Parçası Sarma
receipt-encoder.ts, gelen parçaları iş parçalarına dönüştürür:
- Gelen her parçanın kodu base64’ten çözülür.
- Her yazdırma parçası
delayAfterMs: 25alır. - Bir besleme ve kısmi kesme komutu eklenir.
beepdoğruysa 18 bip komutu eklenir.- Her bip sesi parçasında
delayAfterMs: 150bulunur.
ESC/POS Komutları
Soket Yaşam Döngüsü
Geçerli çalışan her iş için yazıcı bağlantısını açar ve kapatır.
Ayrıca
3000ms’nin boşta bırakma zamanlayıcısı da vardır, ancak mevcut süreç yolu, her başarılı işin hemen ardından bağlantıyı kapatır.
Arıza Yolu
Açma veya yazma başarısız olursa:- Yazıcı
offlineolarak işaretlenmiştir. - Soket serbest bırakılır/yok edilir.
- BullMQ işi başarısız oluyor.
- BullMQ,
queue.retryDelayMs’den sonra yeniden dener. - Yazıcıya tekrar ulaşıldığında, gelecekteki bir
runAtile kasıtlı olarak planlanmadıkları sürece, gecikmeli yeniden deneme işleri yükseltilir.
Durum Araştırması
POST /status yazıcıyı yalnızca kuyruk çalışması etkin olmadığında araştırabilir. Bu, aynı yazıcı yazdırma işlemiyle meşgulken prob yuvasının açılmasını önler.