Skip to main content

تدفق الطباعة

برنامج تشغيل الطابعة PC يعود عمداً بسرعة من /print. يحدث الإدخال/الإخراج الفعلي للطابعة في عامل الخلفية للطابعة المستهدفة.

التدفق من النهاية إلى النهاية

  1. تعرض وحدة التحكم Plato إيصالًا أو تذكرة أو تقريرًا إلى PNG blob.
  2. يقوم محول Console WIN_DRIVER بتحويل الصورة إلى صفوف نقطية باللون الأسود/الأبيض.
  3. يتم تقسيم الصفوف النقطية إلى أجزاء مكونة من 128 صفًا.
  4. يتم تشفير كل قطعة كأمر نقطي ESC/POS وترميز base64.
  5. ترسل وحدة التحكم POST /print مع ip_address وport وchunks.
  6. يقوم برنامج التشغيل بتغليف القطع بتأخيرات صغيرة، وإضافة التغذية/القص، وإضافة أوامر صوتية بشكل اختياري.
  7. تتم إضافة المهمة إلى قائمة انتظار BullMQ الخاصة بالطابعة.
  8. يقوم العامل بفتح مقبس TCP للطابعة.
  9. يرسل العامل تهيئة ESC/POS، ثم كل قطعة.
  10. يقوم العامل بإغلاق اتصال الطابعة بعد المهمة.

تقطيع وحدة التحكم

يستخدم محول وحدة التحكم: يرسل المتصفح قطعًا نقطية مشفرة بالفعل. لا يعرض برنامج التشغيل HTML.

التفاف قطعة السائق

يقوم receipt-encoder.ts بتحويل الأجزاء الواردة إلى أجزاء مهمة:
  • يتم فك تشفير كل قطعة واردة من base64.
  • تحصل كل قطعة طباعة على delayAfterMs: 25.
  • يتم إلحاق أمر التغذية والقطع الجزئي.
  • إذا كان beep صحيحًا، فسيتم إلحاق 18 أمرًا صوتيًا.
  • تحتوي كل قطعة صوتية على delayAfterMs: 150.

أوامر ESC/POS

دورة حياة المقبس

يقوم العامل الحالي بفتح وإغلاق اتصال الطابعة لكل مهمة. يوجد أيضًا مؤقت تحرير خامل لـ 3000ms، لكن مسار العملية الحالي يغلق الاتصال فورًا بعد كل مهمة ناجحة.

مسار الفشل

في حالة فشل الفتح أو الكتابة:
  1. تم وضع علامة offline على الطابعة.
  2. تم تحرير/تدمير المقبس.
  3. فشلت مهمة BullMQ.
  4. يقوم BullMQ بإعادة المحاولة بعد queue.retryDelayMs.
  5. عند الوصول إلى الطابعة مرة أخرى، يتم ترقية مهام إعادة المحاولة المؤجلة ما لم يتم جدولتها بشكل مقصود مع runAt في المستقبل.

فحص الحالة

يمكن لـ POST /status فحص الطابعة فقط عندما لا يكون عمل قائمة الانتظار نشطًا. يؤدي ذلك إلى تجنب فتح مقبس المسبار أثناء انشغال الطابعة نفسها بالطباعة.