Drukarka etykiet kłamie w sprawie DPI

Otwartoźródłowy sterownik Web Bluetooth pokazuje, że drukarka etykiet Niimbot N1, reklamowana jako urządzenie o rozdzielczości 300 dpi, w rzeczywistości drukuje z rozdzielczością około 203 dpi.

Deweloper stworzył sterownik, aby umożliwić drukowanie bezpośrednio ze strony internetowej zamiast korzystania z aplikacji mobilnej Niimbot. Przeprowadził inżynierię wsteczną zastrzeżonego protokołu i udostępnił go przeglądarkom za pomocą Web Bluetooth API. Robiąc to, odkrył nie tylko brakującą funkcję, ale fundamentalną błędną specyfikację, która może zrujnować opakowania z małych partii, etykiety inwentaryzacyjne lub projekty hobbystyczne, w których liczy się precyzja.

Jak ujawniła się błędna specyfikacja

Niimbot promuje model N1 jako drukarkę 300 dpi, co sugeruje 300 kropek na cal. Deweloper wydrukował obraz z podziałką linijki oraz numerowany wzór testowy, a następnie zmierzył znaki fizyczną linijką. Obliczenia konsekwentnie wskazywały na około 203 dpi, a nie na deklarowane 300.

Cztery ciężko wypracowane lekcje z pisania sterownika sprzętowego

  1. „Udane” zadanie może nie przynieść żadnego efektu. Drukarka przesyła dane w seriach. Na niektórych platformach stos Bluetooth porzuca operację zapisu bez zgłaszania błędu. Sterownik zakłada, że zadanie zostało zakończone, mimo że etykieta wychodzi pusta lub ucięta. Autor czyta teraz fizyczny licznik stron drukarki po każdym zadaniu, aby zweryfikować, czy arkusz został faktycznie podany.

  2. Dokumentacja to nie rzeczywistość. Twierdzenie o 300 dpi jest tego jasnym przykładem. Specyfikacje mogą być optymistyczne, nieaktualne lub po prostu błędne. Deweloperzy muszą samodzielnie mierzyć krytyczne parametry, gdy liczy się wierność wizualna.

  3. Fizyczne znaki są lepsze niż testy „dopasowania”. Drukowanie obrazu, aby sprawdzić, czy mieści się on na polu etykiety, maskuje błędy rozdzielczości, szerokości głowicy drukującej lub przesunięcia. Wydrukowanie znanego znaku geometrycznego i zmierzenie jego dokładnej lokalizacji ujawnia prawdziwe działanie urządzenia.

  4. Protokół opisuje gramatykę, a nie temperament sprzętu. Dwie drukarki mogą korzystać z tego samego zestawu poleceń, a mimo to zachowywać się inaczej – jedna radzi sobie z szybkim powtarzaniem stron, inna zacina się. Sterownik nie może zakładać identycznej wydajności wyłącznie na podstawie dokumentacji protokołu; każdy model wymaga testów w rzeczywistych warunkach.

Dlaczego ten sterownik jest ważny

Sterownik nigdy nie udaje, że wie wszystko. Za każdym razem, gdy wnioskuje o wartości zamiast odczytać ją z drukarki, oznacza to pole jako przypuszczenie. Ta przejrzystość zapobiega cichym błędom, które w przeciwnym razie pochłonęłyby godziny debugowania.

Jak pobrać sterownik

Sterownik działa w Chrome lub Edge i wymaga jedynie urządzenia z Bluetooth oraz obsługiwanej drukarki Niimbot. Wypróbuj demo na żywo pod adresem:

https://iscarelli.github.io/niimbot-web-bluetooth/demo/

Kod źródłowy znajduje się na GitHubie, gdzie społeczność może dodawać dane o modelach, naprawiać błędy lub dostosowywać sterownik do innych przeglądarek:

https://github.com/iscarelli/niimbot-web-bluetooth

Właściciele drukarek Niimbot mogą pomóc w uzupełnieniu bazy modeli; proces ten zajmuje około dziesięciu minut i wymaga użycia dwóch etykiet.

Kontrargument

Dopóki firma nie wyjaśni rozbieżności, deweloperzy muszą pracować z wartością zmierzoną.

Wniosek jest prosty: sprzęt, który wywołujesz ze strony internetowej, może nie robić tego, co obiecuje jego specyfikacja. Weryfikuj krytyczne parametry, spodziewaj się cichych awarii i wybieraj sterowniki, które ujawniają niepewność, zamiast ją ukrywać.