Skip to main content

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ış

  1. Plato Konsolu bir PNG blobuna makbuz, bilet veya rapor işler.
  2. Konsol WIN_DRIVER bağdaştırıcısı görüntüyü siyah/beyaz tarama satırlarına dönüştürür.
  3. Raster satırları 128 satırlık parçalara bölünmüştür.
  4. Her parça bir ESC/POS raster komutu olarak kodlanır ve base64 olarak kodlanır.
  5. Konsol, ip_address, port ve chunks ile POST /print’yi gönderir.
  6. Sürücü parçaları küçük gecikmelerle sarar, besleme/kesme ekler ve isteğe bağlı olarak bip sesi komutları ekler.
  7. İş, söz konusu yazıcının BullMQ kuyruğuna eklenir.
  8. Çalışan yazıcıya bir TCP yuvası açar.
  9. Çalışan ESC/POS başlatmayı ve ardından her parçayı gönderir.
  10. İşç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: 25 alır.
  • Bir besleme ve kısmi kesme komutu eklenir.
  • beep doğruysa 18 bip komutu eklenir.
  • Her bip sesi parçasında delayAfterMs: 150 bulunur.

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:
  1. Yazıcı offline olarak işaretlenmiştir.
  2. Soket serbest bırakılır/yok edilir.
  3. BullMQ işi başarısız oluyor.
  4. BullMQ, queue.retryDelayMs’den sonra yeniden dener.
  5. Yazıcıya tekrar ulaşıldığında, gelecekteki bir runAt ile 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.