Pencetak Label Menipu Tentang DPI
Sebuah pemacu Web Bluetooth sumber terbuka menunjukkan bahawa pencetak label Niimbot N1, yang diiklankan sebagai peranti 300 dpi, sebenarnya mencetak pada sekitar 203 dpi.
Pembangun tersebut membina pemacu itu untuk mencetak terus dari halaman web dan bukannya menggunakan aplikasi mudah alih Niimbot. Beliau melakukan kejuruteraan terbalik terhadap protokol proprietari tersebut dan mendedahkannya kepada pelayar melalui Web Bluetooth API. Dengan berbuat demikian, beliau bukan sahaja menemui ciri yang hilang, malah satu salah nyataan spesifikasi asas yang boleh merosakkan pembungkusan kelompok kecil, tag inventori, atau projek hobi yang memerlukan ketepatan.
Bagaimana salah nyataan spesifikasi itu terbongkar
Niimbot memasarkan N1 sebagai pencetak 300 dpi, yang bermaksud 300 titik setiap inci. Pembangun tersebut mencetak imej skala pembaris dan corak ujian bernombor, kemudian mengukur tanda-tanda tersebut dengan pembaris fizikal. Pengiraan secara konsisten menunjukkan sekitar 203 dpi, bukannya 300 seperti yang didakwa.
Empat pengajaran berharga daripada penulisan pemacu perkakasan
Tugasan yang "berjaya" mungkin tidak menghasilkan apa-apa. Pencetak menghantar data dalam bentuk lonjakan (bursts). Pada sesetengah platform, timbunan (stack) Bluetooth menggugurkan penulisan tanpa melaporkan ralat. Pemacu menganggap tugasan telah selesai, namun label yang keluar kosong atau terpotong. Penulis kini membaca pengira halaman fizikal pencetak selepas setiap tugasan untuk mengesahkan bahawa helaian telah dimasukkan dengan betul.
Dokumentasi bukanlah realiti. Dakwaan 300 dpi adalah contoh yang jelas. Spesifikasi boleh jadi terlalu optimistik, lapuk, atau sekadar salah. Pembangun mesti mengukur parameter kritikal sendiri apabila ketepatan visual adalah penting.
Tanda fizikal lebih baik daripada ujian "padanan". Mencetak imej untuk melihat sama ada ia muat dalam kawasan label boleh menyembunyikan ralat resolusi, lebar kepala cetak, atau ralat anjakan (offset). Mencetak tanda geometri yang diketahui dan mengukur lokasi tepatnya akan mendedahkan tingkah laku sebenar peranti tersebut.
Protokol menerangkan tatabahasa, bukan temperamen perkakasan. Dua pencetak mungkin berkongsi set arahan yang sama namun berkelakuan berbeza—satu mengendalikan pengulangan halaman yang pantas, manakala satu lagi terhenti. Pemacu tidak boleh mengandaikan prestasi yang serupa hanya berdasarkan dokumentasi protokol; setiap model memerlukan ujian dunia sebenar.
Mengapa pemacu ini penting
Pemacu ini tidak pernah berpura-pura mengetahui segalanya. Setiap kali ia membuat inferens terhadap sesuatu nilai dan bukannya membacanya terus daripada pencetak, ia akan menandakan medan tersebut sebagai satu tekaan. Ketelusan ini menghalang ralat senyap yang jika tidak dicegah, akan memakan masa berjam-jam untuk proses penyahpepijatan (debugging).
Cara mendapatkan pemacu
Pemacu ini berjalan di Chrome atau Edge dan hanya memerlukan peranti dengan keupayaan Bluetooth serta pencetak Niimbot yang disokong. Cuba demo langsung di:
https://iscarelli.github.io/niimbot-web-bluetooth/demo/
Kod sumbernya berada di GitHub, di mana komuniti boleh menyumbang data model, membaiki pepijat, atau menyesuaikan pemacu untuk pelayar lain:
https://github.com/iscarelli/niimbot-web-bluetooth
Pemilik Niimbot boleh membantu melengkapkan pangkalan data model; proses ini hanya mengambil masa kira-kira sepuluh minit dan dua keping label.
Pandangan berbeza
Sehingga syarikat tersebut menjelaskan percanggahan itu, pembangun mesti bekerja dengan nilai yang telah diukur.
Pengajarannya mudah: perkakasan yang anda panggil dari halaman web mungkin tidak melakukan apa yang dijanjikan dalam helaian spesifikasinya. Sahkan parameter kritikal, jangkakan kegagalan senyap, dan pilih pemacu yang mendedahkan ketidakpastian dan bukannya menyembunyikannya.
