طابعة الملصقات تكذب بشأن دقة الـ DPI
يُظهر برنامج تشغيل Web Bluetooth مفتوح المصدر أن طابعة الملصقات N1 من Niimbot، والتي يتم الترويج لها كجهاز بدقة 300 dpi، تطبع في الواقع بدقة تقارب 203 dpi.
قام المطور ببناء برنامج التشغيل للطباعة مباشرة من صفحة ويب بدلاً من استخدام تطبيق Niimbot للهاتف المحمول. وقد قام بهندسة عكسية للبروتوكول المملوك للشركة وكشف عنه للمتصفحات عبر Web Bluetooth API. ومن خلال القيام بذلك، لم يكتشف مجرد ميزة مفقودة، بل اكتشف خطأً جوهرياً في المواصفات يمكن أن يفسد عمليات التغليف للكميات الصغيرة، أو بطاقات المخزون، أو مشاريع الهواة التي تتطلب دقة عالية.
كيف ظهر الخطأ في المواصفات
تسوق Niimbot طابعة N1 على أنها طابعة بدقة 300 dpi، مما يعني 300 نقطة لكل بوصة. قام المطور بطباعة صورة بمقياس مسطرة ونمط اختبار مرقم، ثم قام بقياس العلامات بمسطرة فعلية. وقد أشارت الحسابات باستمرار إلى حوالي 203 dpi، وليس الـ 300 المزعومة.
أربع دروس مستفادة بصعوبة من كتابة برنامج تشغيل للأجهزة (hardware driver)
قد لا تؤدي المهمة "الناجحة" إلى أي نتيجة. تقوم الطابعة ببث البيانات في دفعات. في بعض المنصات، قد يتجاهل مكدس (stack) الـ Bluetooth عملية كتابة دون الإبلاغ عن خطأ. يفترض برنامج التشغيل أن المهمة قد اكتملت، ومع ذلك تخرج الملصقات فارغة أو مبتورة. أصبح المؤلف الآن يقرأ عداد الصفحات الفعلي للطابعة بعد كل مهمة للتحقق من أنه تم تغذية ورقة بالفعل.
الوثائق ليست هي الواقع. يعد ادعاء الـ 300 dpi مثالاً واضحاً على ذلك. يمكن أن تكون المواصفات متفائلة، أو قديمة، أو ببساطة خاطئة. يجب على المطورين قياس المعايير الهامة بأنفسهم عندما تكون الدقة البصرية أمراً حيوياً.
العلامات المادية تتفوق على اختبارات "الملاءمة". إن طباعة صورة لمعرفة ما إذا كانت تناسب مساحة الملصق تخفي أخطاء الدقة، أو عرض رأس الطباعة، أو أخطاء الإزاحة. أما طباعة علامة هندسية معروفة وقياس موقعها الدقيق فيكشف عن السلوك الحقيقي للجهاز.
البروتوكول يصف القواعد، وليس سلوك الأجهزة. قد تشترك طابعتان في نفس مجموعة الأوامر ومع ذلك تتصرفان بشكل مختلف؛ إحداهما تتعامل مع تكرار الصفحات السريع، والأخرى تتوقف. لا يمكن لبرنامج التشغيل افتراض أداء متطابق بناءً على وثائق البروتوكول وحدها؛ فكل طراز يحتاج إلى اختبار في العالم الحقيقي.
لماذا يكتسب برنامج التشغيل أهمية
لا يدعي برنامج التشغيل معرفة كل شيء أبداً. فكلما استنتج قيمة بدلاً من قراءتها من الطابعة، فإنه يضع علامة على الحقل باعتباره "تخميناً". تمنع هذه الشفافية الأخطاء الصامتة التي قد تستهلك ساعات من تصحيح الأخطاء (debugging).
الحصول على برنامج التشغيل
يعمل برنامج التشغيل في Chrome أو Edge ولا يحتاج سوى إلى جهاز يدعم Bluetooth وطابعة Niimbot مدعومة. جرب العرض التجريبي المباشر على:
https://iscarelli.github.io/niimbot-web-bluetooth/demo/
يتوفر الكود المصدري على GitHub، حيث يمكن للمجتمع المساهمة ببيانات الطرازات، أو إصلاح الأخطاء، أو تكييف برنامج التشغيل مع المتصفحات الأخرى:
https://github.com/iscarelli/niimbot-web-bluetooth
يمكن لمالكي Niimbot المساعدة في ملء قاعدة بيانات الطرازات؛ تستغرق العملية حوالي عشر دقائق وملصقين فقط.
وجهة نظر مقابلة
حتى توضح الشركة هذا التناقض، يجب على المطورين العمل بالقيمة المقاسة.
الخلاصة بسيطة: الأجهزة التي تستدعيها من صفحة ويب قد لا تفعل ما تعد به ورقة مواصفاتها. تحقق من المعايير الهامة، وتوقع حدوث إخفاقات صامتة، واختر برامج التشغيل التي تكشف عن عدم اليقين بدلاً من إخفائه.
