Принтер етикеток бреше про DPI
Open-source драйвер Web Bluetooth показує, що принтер етикеток Niimbot N1, який рекламується як пристрій із роздільною здатністю 300 dpi, насправді друкує з роздільною здатністю приблизно 203 dpi.
Розробник створив драйвер для друку безпосередньо зі вебсторінки замість використання мобільного додатка Niimbot. Він провів реверс-інжиніринг пропрієтарного протоколу та відкрив його для браузерів через Web Bluetooth API. Таким чином він виявив не лише відсутню функцію, а й фундаментальну невідповідність специфікації, яка може зіпсувати пакування малих партій товарів, інвентарні бирки або хобі-проєкти, де важлива точність.
Як виявилася невідповідність специфікації
Niimbot позиціонує N1 як принтер із роздільною здатністю 300 dpi, що означає 300 точок на дюйм. Розробник надрукував зображення з лінійкою та пронумерований тестовий паттерн, а потім виміряв позначки фізичною лінійкою. Розрахунки незмінно вказували на приблизно 203 dpi, а не на заявлені 300.
Чотири важко здобуті уроки написання драйвера обладнання
«Успішне» завдання може нічого не дати. Принтер передає дані порціями. На деяких платформах Bluetooth-стек може ігнорувати запис без повідомлення про помилку. Драйвер вважає, що завдання виконано, проте етикетка виходить порожньою або обрізаною. Тепер автор перевіряє фізичний лічильник сторінок принтера після кожного завдання, щоб переконатися, що аркуш дійсно подався.
Документація — це не реальність. Заявлені 300 dpi є яскравим прикладом. Специфікації можуть бути оптимістичними, застарілими або просто помилковими. Розробники повинні самостійно вимірювати критичні параметри, коли важлива візуальна точність.
Фізичні позначки кращі за тести на «відповідність». Друк зображення, щоб перевірити, чи вписується воно в область етикетки, приховує помилки роздільної здатності, ширини друкувальної головки або зміщення. Друк відомої геометричної фігури та вимірювання її точного розташування розкриває справжню поведінку пристрою.
Протокол описує граматику, а не характер обладнання. Два принтери можуть мати однаковий набір команд, але поводитися по-різному: один справляється з швидким повторенням сторінок, інший — зависає. Драйвер не може припускати ідентичну продуктивність лише на основі документації до протоколу; кожна модель потребує тестування в реальних умовах.
Чому цей драйвер важливий
Драйвер ніколи не вдає, що знає все. Щоразу, коли він вираховує значення замість того, щоб зчитати його з принтера, він позначає це поле як припущення. Така прозорість запобігає прихованим помилкам, які інакше змусили б витратити години на налагодження.
Як отримати драйвер
Драйвер працює в Chrome або Edge і потребує лише пристрою з підтримкою Bluetooth та сумісного принтера Niimbot. Спробуйте демо-версію за посиланням:
https://iscarelli.github.io/niimbot-web-bluetooth/demo/
Вихідний код розміщено на GitHub, де спільнота може додавати дані про моделі, виправляти помилки або адаптувати драйвер для інших браузерів:
https://github.com/iscarelli/niimbot-web-bluetooth
Власники Niimbot можуть допомогти наповнити базу даних моделей; цей процес займає близько десяти хвилин і потребує лише двох етикеток.
Контраргумент
Доки компанія не роз'яснить цю невідповідність, розробники повинні працювати з виміряним значенням.
Висновок простий: обладнання, до якого ви звертаєтеся зі вебсторінки, може не робити того, що обіцяє його технічний паспорт. Перевіряйте критичні параметри, очікуйте на приховані збої та обирайте драйвери, які виявляють невизначеність, а не приховують її.
