SP650は大崎データテックのサーマルプリンターです。
感熱紙を使うタイプですがレジとかで使うのではなく、検針票の印刷が主な用途のようです。
仕様とか
- 完全充電式で本体にポートが1つもない。
- 紙幅は114mm
- Bluetooth接続のみ
- 普通にペアリングしてもすぐに解除されてしまう。
- Windows用のプリンタードライバーは存在するが公開されていない。
- 公に存在する対応アプリは下記APIサーバーと検針スマホのみ
- 後者は体験版で印刷ができない
どうやって使う?
- Android用にLocalPrintServerとStartLocalPrintというアプリが公開されている。
- iOSではlocalprintserverap
- スマホでWebサーバーを立てて、APIにリクエストを送って使う。
- APIの形式は普通のREST API風
- ただしリクエストは全部POSTとapplication/x-www-form-urlencoded形式
- StartLocalPrintから起動するとリクエストをlocalhostの20000番ポートで待ち受ける。
- 一度ペアリングしてから下の印刷のエンドポイントをリクエストする。
エンドポイント
印刷
- /prnInit
- ライブラリ初期化
- /setPrinterType
- printerType
- プリンターの種類、SP650(VI)なら6
- プリンターの種類を設定
- printerType
- /openCom
- bdAddress
- Bluetoothデバイスアドレス、裏面に記載の12桁
- 機器に接続
- bdAddress
- /drawCharacter
- fieldNo
- フィールド番号、なしの場合0
- row
- column
- 開始場所
- strBuf
- 印刷する文字列
- useDirectChg
- 直接給電しているかのフラグ?
- 文字列の描画をスプール
- fieldNo
- /drawLine
- row
- column
- 開始場所
- length
- 長さ
- direction
- 方向、0で横、1で縦
- /setSPParameterEx
- printArea
- 印刷範囲、最大で2066
- paperType
- 用紙種別、感熱紙の場合0
- checkSum
- チェックサム?ふつうは3
- startPosition
- 印刷開始位置、47以上
- paperLength1
- paperLength2
- 紙の長さ?
- whiteSpace
- 余白?
- 印刷パラメータの設定
- printArea
- /printSP
- ack
- 応答を待つかどうかの設定?
- 印刷
- ack

デバッグ
- /getErrInfo
- 直前に実行した関数のエラーを取得
- 4なら未接続、101なら紙切れ、110ならパラメータが不正など
- /setLogFile
- filePath
- ファイル名
- level
- ログレベル、1から4
- 設定するとライブラリのログを残すようになる
- filePath
最後に
入手した機体は合計印刷回数が42200回でした。検針票は横15cmほどなので、6.3kmほど印刷したことになります。
サーマルヘッドの寿命が10kmなので少なめに見積もってもあと2万回は印刷できそうです。