経緯
サーマルプリンタと自作のプログラムを使って職場で発券機を運用しており
今まで、phpで組んだ発券機プログラムからphp_printer.dllを使ってサーマルプリンタに出力してきました。
閉じられた環境の中、不自由はありませんでしたが、Windows PCはイニシャルコストがばかにならないこと、不具合発生時のリカバリーが面倒なので、低コストかつ一度作ったSDイメージを使うことで容易に交換が可能なRaspberry Piで代替しようというのが始まりです。
動作環境
- Raspberry Pi 3 Model A+
- Symcode 58MM USB サーマルレシートプリンター
つまづいたところ
- サーマルプリンタお馴染みのESC/POSコマンドを使った制御方法(python-escpos)だと、印刷をしたあとプリンタを見失い、デバイス番号が変わって印刷ができなくなってしまう(lsusbでの挙動/原因究明諦めた)。Zijiang ZJ-58用のドライバをセットアップしてCUPS経由で印刷に成功した。
手順
sudo apt install system-config-printer cups build-essential cmake libcups2-dev libcupsimage2-dev
もろもろインストール
git clone https://github.com/klirichek/zj-58
cd zj-58
cmake --build .
sudo make install
あとは、CUPSでプリンタのセットアップ(メニュー→設定→印刷設定→ロック解除→+Add→Unknown→Zijiang)
※ロック解除前にrootのパスワード設定(sudo passwd root)はしておくこと
印刷に成功して気付いたけどオートカッターなしモデルなので使い物にならない(´・_・`)
互換性のあるオートカッター付きサーマルプリンタをAmazonで買わなければ…
参考資料
Raspberry Piからサーマルプリンタに印刷命令を送りたい
klirichek/zj-58
Thermal Printer driver for CUPS, Linux, and Raspberry Pi: zj-58
Zj-58, Zj-80 and other receipt printers