الانتقال إلى المحتوى الرئيسي

تكامل وحدة التحكم

تستخدم وحدة التحكم Plato محول الطابعة WIN_DRIVER لبرنامج تشغيل الطابعة بالكمبيوتر.

سجل الطابعة

تقوم وحدة التحكم بتخزين الطابعات في قاعدة بيانات IndexedDB تسمى printer-database. تتضمن سجلات الطابعة ما يلي:
  • نوع الطابعة
  • حالة
  • الخطأ الأخير
  • التكوين
  • عرض الورق
  • فئات
  • أنواع الطلب
  • شعار
النوع ذو الصلة:
type PrinterType =
  | "EPSON"
  | "WIN_DRIVER"
  | "USB"
  | "BUILT_IN"
  | "ANDROID_DRIVER"
  | "SUNMI";

سائق URL

يبني محول WIN_DRIVER قاعدة URL من تكوين الطابعة:
http://<driverIpAddress>:<driverPort>
https://<driverIpAddress>:<driverPort>
إذا كان driverPort فارغًا، فسيقوم المحول بحذف المنفذ. وهذا مفيد لـ HTTPS على المنفذ 443.

هدف الطابعة

يرسل المحول هدف الطابعة الفعلية بشكل منفصل عن برنامج التشغيل URL.
حقل التكوينحقل الطلبملحوظات
driverIpAddressالمضيف URLالآلة تعمل بنظام plato-printer.exe.
driverPortمنفذ URLمنفذ السائق HTTP/HTTPS.
driverUseHttpsبروتوكول URLيستخدم https عندما يكون صحيحًا.
ipAddressip_addressIP الطابعة المادية.
portportمنفذ TCP للطابعة الفعلية.
vendorvendor_idمعرف البائع المعين.
productIdproduct_idأرسلت للتوافق.
beepbeepتمكين تسلسل الصفير بعد الطباعة.
إذا كان عنوان IP الخاص بالطابعة مفقودًا أو يساوي 192.168.0.0، يرسل المحول ip_address: null وport: null، وهو ما يرفضه برنامج التشغيل الحالي باستخدام Missing printer address.

معرفات البائعين

يقوم المحول بتعيين البائعين:
بائعمعرف البائع
EPSON0x04b8
BIRCH0x1fc9
PHILIPS0x0471
SUNMI0x04b8
OSCAR0x04b8

تحضير الطباعة

تدفق طباعة وحدة التحكم:
  1. تقديم DOM إلى PNG blob.
  2. تحميل النقطة في القماش.
  3. تحويل وحدات البكسل القماشية إلى صفوف نقطية سوداء/بيضاء.
  4. قم بتقسيم الصفوف النقطية إلى أجزاء مكونة من 128 صفًا.
  5. قم بتشفير كل قطعة على هيئة بايتات نقطية ESC/POS.
  6. يقوم Base64 بتشفير كل قطعة بايت.
  7. أرسل POST /print.
لا يتلقى برنامج التشغيل HTML مطلقًا. يتلقى قطع ESC/POS القابلة للطباعة.

قائمة انتظار المتصفح

تحتوي وحدة التحكم على قائمة انتظار متصفح محلية قبل أن تصل الطلبات إلى برنامج تشغيل الكمبيوتر.
  • يتم تخزين الوظائف في IndexedDB.
  • تنتقل الوظائف من pending إلى printing.
  • يتم وضع علامة failed على المهام الفاشلة.
  • يتم استرداد مهمة printing التي لا معنى لها بعد 60 ثانية.
  • يتم فحص المهام المجدولة كل 30 ثانية.
  • تتم إعادة محاولة المهام الفاشلة كل 60 ثانية.
لدى برنامج تشغيل الطابعة PC قائمة انتظار Redis الخاصة به بعد قبول طلب HTTP. يعني هناك صفين:
طابورموقعغاية
قائمة انتظار المتصفحPlato وحدة التحكم مفهرسةDBيحتفظ بمهام الطباعة على جانب POS حتى يقبلها برنامج التشغيل.
قائمة انتظار السائقRedis/BullMQيحتفظ بالمهام المقبولة حتى تستقبلها الطابعة الفعلية.

رسم خرائط الحالة

تستدعي وحدة التحكم POST /status.
  • يؤدي فشل HTTP إلى إرجاع OFFLINE.
  • الاستجابة مع ok: true وstatus وليس offline ترجع ONLINE.
  • يتم تخزين استجابات برنامج التشغيل الأخرى كـ lastError.

درج النقود

تستدعي وحدة التحكم POST /cash-drawer لكل طابعة عبر الإنترنت تم تكوينها باستخدام درج النقود.