تدفق الطباعة
برنامج تشغيل الطابعة PC يعود عمداً بسرعة من/print. يحدث الإدخال/الإخراج الفعلي للطابعة في عامل الخلفية للطابعة المستهدفة.
التدفق من النهاية إلى النهاية
- تعرض وحدة التحكم Plato إيصالًا أو تذكرة أو تقريرًا إلى PNG blob.
- يقوم محول Console
WIN_DRIVERبتحويل الصورة إلى صفوف نقطية باللون الأسود/الأبيض. - يتم تقسيم الصفوف النقطية إلى أجزاء مكونة من 128 صفًا.
- يتم تشفير كل قطعة كأمر نقطي ESC/POS وترميز base64.
- ترسل وحدة التحكم
POST /printمعip_addressوportوchunks. - يقوم برنامج التشغيل بتغليف القطع بتأخيرات صغيرة، وإضافة التغذية/القص، وإضافة أوامر صوتية بشكل اختياري.
- تتم إضافة المهمة إلى قائمة انتظار BullMQ الخاصة بالطابعة.
- يقوم العامل بفتح مقبس TCP للطابعة.
- يرسل العامل تهيئة ESC/POS، ثم كل قطعة.
- يقوم العامل بإغلاق اتصال الطابعة بعد المهمة.
تقطيع وحدة التحكم
يستخدم محول وحدة التحكم:
يرسل المتصفح قطعًا نقطية مشفرة بالفعل. لا يعرض برنامج التشغيل HTML.
التفاف قطعة السائق
يقومreceipt-encoder.ts بتحويل الأجزاء الواردة إلى أجزاء مهمة:
- يتم فك تشفير كل قطعة واردة من base64.
- تحصل كل قطعة طباعة على
delayAfterMs: 25. - يتم إلحاق أمر التغذية والقطع الجزئي.
- إذا كان
beepصحيحًا، فسيتم إلحاق 18 أمرًا صوتيًا. - تحتوي كل قطعة صوتية على
delayAfterMs: 150.
أوامر ESC/POS
دورة حياة المقبس
يقوم العامل الحالي بفتح وإغلاق اتصال الطابعة لكل مهمة.
يوجد أيضًا مؤقت تحرير خامل لـ
3000ms، لكن مسار العملية الحالي يغلق الاتصال فورًا بعد كل مهمة ناجحة.
مسار الفشل
في حالة فشل الفتح أو الكتابة:- تم وضع علامة
offlineعلى الطابعة. - تم تحرير/تدمير المقبس.
- فشلت مهمة BullMQ.
- يقوم BullMQ بإعادة المحاولة بعد
queue.retryDelayMs. - عند الوصول إلى الطابعة مرة أخرى، يتم ترقية مهام إعادة المحاولة المؤجلة ما لم يتم جدولتها بشكل مقصود مع
runAtفي المستقبل.
فحص الحالة
يمكن لـPOST /status فحص الطابعة فقط عندما لا يكون عمل قائمة الانتظار نشطًا. يؤدي ذلك إلى تجنب فتح مقبس المسبار أثناء انشغال الطابعة نفسها بالطباعة.