라벨 프린터의 DPI 표기는 사실과 다릅니다
오픈 소스 Web Bluetooth 드라이버에 따르면, 300 dpi 제품으로 광고된 Niimbot의 N1 라벨 프린터는 실제로는 약 203 dpi로 인쇄됩니다.
개발자는 Niimbot의 모바일 앱을 사용하는 대신 웹 페이지에서 직접 인쇄할 수 있도록 드라이버를 제작했습니다. 그는 독자적인 프로토콜을 역공학(reverse-engineered)하여 Web Bluetooth API를 통해 브라우저에서 사용할 수 있도록 공개했습니다. 이 과정에서 그는 단순히 누락된 기능을 발견한 것이 아니라, 정밀함이 중요한 소량 패키징, 재고 태그 또는 취미 프로젝트를 망칠 수 있는 근본적인 사양 오류를 발견했습니다.
사양 오류가 드러난 과정
Niimbot은 N1을 인치당 300개의 점을 찍는 300 dpi 프린터로 마케팅하고 있습니다. 개발자는 자(ruler) 눈금 이미지와 번호가 매겨진 테스트 패턴을 인쇄한 후, 실제 자로 표시된 눈금을 측정했습니다. 계산 결과는 일관되게 주장된 300 dpi가 아닌 약 203 dpi를 가리켰습니다.
하드웨어 드라이버를 작성하며 얻은 네 가지 값진 교훈
"성공적인" 작업이 아무것도 출력하지 않을 수 있습니다. 프린터는 데이터를 버스트(burst) 방식으로 스트리밍합니다. 일부 플랫폼에서는 Bluetooth 스택이 오류를 보고하지 않고 쓰기 작업을 누락시키기도 합니다. 드라이버는 작업이 완료되었다고 가정하지만, 라벨은 백지로 나오거나 잘려서 출력될 수 있습니다. 저자는 이제 시트가 실제로 급지되었는지 확인하기 위해 각 작업 후에 프린터의 물리적 페이지 카운터를 읽습니다.
문서가 곧 현실은 아닙니다. 300 dpi 주장이 명확한 예시입니다. 사양은 낙관적이거나, 오래되었거나, 단순히 틀릴 수 있습니다. 시각적 충실도가 중요한 경우, 개발자는 중요한 매개변수를 직접 측정해야 합니다.
물리적 표시가 "맞춤" 테스트보다 확실합니다. 이미지가 라벨 영역에 맞는지 확인하기 위해 인쇄하는 방식은 해상도, 프린트 헤드 너비 또는 오프셋 오류를 가릴 수 있습니다. 알려진 기하학적 표시를 인쇄하고 그 정확한 위치를 측정하면 장치의 실제 동작을 파악할 수 있습니다.
프로토콜은 문법을 설명할 뿐, 하드웨어의 성질을 설명하지 않습니다. 두 프린터가 동일한 명령 세트를 공유하더라도 동작은 다를 수 있습니다. 하나는 빠른 페이지 반복을 처리할 수 있지만, 다른 하나는 멈출 수도 있습니다. 드라이버는 프로토콜 문서만으로 동일한 성능을 가정할 수 없으며, 각 모델에 대해 실제 환경 테스트가 필요합니다.
이 드라이버가 중요한 이유
이 드라이버는 모든 것을 안다고 자처하지 않습니다. 프린터에서 값을 읽는 대신 값을 추론할 때마다 해당 필드를 '추측(guess)'으로 표시합니다. 이러한 투명성은 자칫 몇 시간의 디버깅을 소모하게 만들 수 있는 조용한 오류를 방지합니다.
드라이버 사용하기
드라이버는 Chrome 또는 Edge에서 실행되며, Bluetooth 기능이 있는 장치와 지원되는 Niimbot 프린터만 있으면 됩니다. 라이브 데모를 확인해 보세요:
https://iscarelli.github.io/niimbot-web-bluetooth/demo/
소스 코드는 GitHub에 있으며, 커뮤니티는 모델 데이터를 기여하거나, 버그를 수정하거나, 다른 브라우저용으로 드라이버를 조정할 수 있습니다:
https://github.com/iscarelli/niimbot-web-bluetooth
Niimbot 사용자들은 모델 데이터베이스를 구축하는 데 도움을 줄 수 있습니다. 이 과정은 약 10분과 라벨 2장이 소요됩니다.
반론
회사가 이 불일치를 명확히 설명할 때까지, 개발자는 측정된 값을 바탕으로 작업해야 합니다.
결론은 간단합니다. 웹 페이지에서 호출하는 하드웨어가 사양서의 약속대로 작동하지 않을 수도 있습니다. 중요한 매개변수를 확인하고, 조용한 실패를 예상하며, 불확실성을 숨기는 대신 드러내는 드라이버를 선택하십시오.
