लेबल प्रिंटर DPI बद्दल खोटे सांगतो
एक ओपन-सोर्स Web Bluetooth ड्रायव्हर असे दर्शवतो की Niimbot चा N1 लेबल प्रिंटर, जो 300 dpi उपकरणाच्या रूपात जाहिरात केला जातो, प्रत्यक्षात साधारणपणे 203 dpi वर प्रिंट करतो.
Niimbot चे मोबाईल ॲप वापरण्याऐवजी थेट वेब पेजवरून प्रिंट करण्यासाठी डेव्हलपरने हा ड्रायव्हर तयार केला. त्याने प्रोप्रायटरी प्रोटोकॉलचे (proprietary protocol) रिव्हर्स-इंजिनिअरिंग केले आणि Web Bluetooth API द्वारे तो ब्राउझर्ससाठी उपलब्ध करून दिला. असे करताना, त्याला केवळ एखादे फीचर गहाळ असल्याचेच नाही, तर एक मूलभूत चुकीचे स्पेसिफिकेशन (mis-specification) देखील आढळले, ज्यामुळे लहान बॅचचे पॅकेजिंग, इन्व्हेंटरी टॅग किंवा अचूकतेची गरज असलेल्या छंद जोपासणाऱ्या प्रकल्पांचे (hobby projects) नुकसान होऊ शकते.
हे चुकीचे स्पेसिफिकेशन कसे समोर आले
Niimbot N1 ला 300 dpi प्रिंटर म्हणून मार्केट करते, ज्याचा अर्थ प्रति इंच 300 डॉट्स असा होतो. डेव्हलपरने एक रूलर-स्केल इमेज आणि नंबर असलेला टेस्ट पॅटर्न प्रिंट केला आणि त्यानंतर प्रत्यक्ष रूलरने त्या खुणा मोजल्या. गणितानुसार ते सातत्याने सुमारे 203 dpi असल्याचे दिसून आले, दावा केलेल्या 300 dpi प्रमाणे नाही.
हार्डवेअर ड्रायव्हर लिहिण्यापासून मिळालेले चार कठीण धडे
एक "यशस्वी" जॉब काहीही उत्पादन करू शकणार नाही. प्रिंटर डेटा बर्स्ट्समध्ये (bursts) स्ट्रीम करतो. काही प्लॅटफॉर्मवर ब्लूटूथ स्टॅक त्रुटी (error) न सांगता 'राईट' (write) ऑपरेशन ड्रॉप करतो. ड्रायव्हरला वाटते की काम पूर्ण झाले आहे, तरीही लेबल रिकामे किंवा अर्धवट येते. लेखक आता प्रत्येक जॉबनंतर शीट प्रत्यक्षात फीड झाली आहे की नाही हे तपासण्यासाठी प्रिंटरचा फिजिकल पेज काउंटर वाचतात.
डॉक्युमेंटेशन म्हणजे वास्तव नाही. 300 dpi चा दावा हे याचे स्पष्ट उदाहरण आहे. स्पेसिफिकेशन्स आशावादी, कालबाह्य किंवा सरळ चुकीचे असू शकतात. जेव्हा व्हिज्युअल फिडेलिटी (visual fidelity) महत्त्वाची असते, तेव्हा डेव्हलपर्सनी महत्त्वाचे पॅरामीटर्स स्वतः मोजले पाहिजेत.
"फिट" टेस्टपेक्षा प्रत्यक्ष खुणा अधिक प्रभावी ठरतात. इमेज लेबलच्या क्षेत्रात बसते की नाही हे पाहण्यासाठी प्रिंट करणे म्हणजे रिझोल्यूशन, प्रिंटहेडची रुंदी किंवा ऑफसेट त्रुटी लपवणे होय. एखादी ज्ञात भूमितीय (geometric) खूण प्रिंट करणे आणि तिचे अचूक स्थान मोजणे उपकरणाचे खरे वर्तन स्पष्ट करते.
प्रोटोकॉल व्याकरणाचे वर्णन करतो, हार्डवेअरच्या स्वभावाचे नाही. दोन प्रिंटरमध्ये एकच कमांड सेट असू शकतो तरीही त्यांचे वर्तन वेगळे असू शकते—एक वेगाने पेजेस रिपीट करू शकते, तर दुसरे थांबून जाऊ शकते. केवळ प्रोटोकॉल डॉक्युमेंटेशनच्या आधारे ड्रायव्हर सारख्याच कामगिरीची अपेक्षा करू शकत नाही; प्रत्येक मॉडेलला प्रत्यक्ष वापरामध्ये (real-world testing) तपासणे आवश्यक आहे.
हा ड्रायव्हर का महत्त्वाचा आहे
हा ड्रायव्हर सर्व काही माहित असल्याचा आव आणत नाही. जेव्हा तो प्रिंटरकडून मूल्य वाचण्याऐवजी एखाद्या मूल्याचा अंदाज लावतो, तेव्हा तो त्या फील्डला 'अंदाज' (guess) म्हणून चिन्हांकित करतो. ही पारदर्शकता अशा शांत त्रुटींना (silent errors) रोखते ज्यांमुळे अन्यथा डीबगिंगमध्ये तासनतास वाया जाऊ शकले असते.
ड्रायव्हर कसा मिळवायचा
हा ड्रायव्हर Chrome किंवा Edge मध्ये चालतो आणि त्यासाठी फक्त ब्लूटूथ-सक्षम डिव्हाइस आणि समर्थित Niimbot प्रिंटरची आवश्यकता असते. लाईव्ह डेमो येथे पहा:
https://iscarelli.github.io/niimbot-web-bluetooth/demo/
सोर्स कोड GitHub वर उपलब्ध आहे, जिथे समुदाय मॉडेल डेटा देऊ शकतो, बग्स फिक्स करू शकतो किंवा इतर ब्राउझर्ससाठी ड्रायव्हर अनुकूल करू शकतो:
https://github.com/iscarelli/niimbot-web-bluetooth
Niimbot मालक मॉडेल डेटाबेस भरण्यास मदत करू शकतात; या प्रक्रियेसाठी साधारण दहा मिनिटे आणि दोन लेबल्स लागतात.
प्रतिवाद
जोपर्यंत कंपनी या विसंगतीबाबत स्पष्टीकरण देत नाही, तोपर्यंत डेव्हलपर्सना मोजलेल्या मूल्यावरच काम करावे लागेल.
याचा निष्कर्ष साधा आहे: वेब पेजवरून तुम्ही वापरत असलेले हार्डवेअर कदाचित त्याच्या स्पेसिफिकेशन शीटमध्ये दिलेल्या आश्वासनाप्रमाणे काम करणार नाही. महत्त्वाचे पॅरामीटर्स तपासा, शांत त्रुटींची (silent failures) अपेक्षा ठेवा आणि अनिश्चितता लपवण्याऐवजी ती स्पष्टपणे दर्शवणारे ड्रायव्हर्स निवडा.
