TM-T90でレシートの印刷

closeこれは 1 年 7 ヶ月 6 日 前に投稿されたものです。最新のものではありませんので、間違っているかも知れません。

ヤフオクで「TM-T90 LAN接続タイプ」の中古品を入手したので、Pythonから制御してレシートを印刷してみます。

TM-T90

EPSONから発売された「サーマルプリンタ」です。レシートが印刷できます。私が入手したのは、よく目にする58mm幅のレシートを、特定のTCPポートへデータを送り込むことにより印刷することができるタイプです。

ESC/Pコマンド

TM-T90の制御は、ESC/Pで制御します。Windows用のドライバがあるようですが…よく分からないので直接制御します。

ESC/Pコマンドの詳細は、ググれば何らかの資料が出てくるので、実装すれば良いだけです。が、ありがたいことに、既に実装例があるので使います。

python-escpos/python-escpos
https://github.com/python-escpos/python-escpos

TM-T90を含む、一部(ほとんど?)のサーマルプリンタでは、キャッシュドロアーも接続できるようですが、それもESC/Pコマンドで開くことができるみたいです。認証も無いので、強盗がESC/Pコマンドを発行可能な場合、結構危険ですね。

日本語の印字

python-escposによって、文字が印字可能となりました。しかし、残念ながらASCII文字だけで、日本語はダメです。

調べたところ、日本語を印字するには、

  1. 文字コード表を「JIS」に設定
  2. 漢字コードを「JIS」または「Shift-JIS」に設定

で初期化した後、印字のたび、

  1. 漢字モードをONにする
  2. 「JIS」または「Shift-JIS」で符号化された文字列を送る
  3. 漢字モードをOFFにする

で、良いとのことでした。漢字コードを「Shift-JIS」に設定した場合、

  1. 0x1b 0x74 0x01(ESC t 1)
  2. 0x1c 0x43 0x01(FS C 1)

で初期化して、

  1. 0x1c 0x26(FS &)
  2. (Shift-JISで符号化された文字列)
  3. 0x1C 0x2e(FS .)

を送りつければ良いようです。

これで、だいたい印字されます。「だいたい」というのも、この方法では「機種依存文字ではない」文字しか印字されないっぽいのです。ただし、マニュアルには「機種依存文字」の文字形状も載っているので、ちゃんと文字コード表やら何やらを切り替えるなど、工夫すれば印字できるみたいです。

日本語の拡大印刷

ESC/Pコマンドでは、拡大印刷というモードがあります。レシートに、「合計」など、幅が2倍になった文字が印字されていませんか?それです。python-escposでは、それがサポートされており、これを使うだけ…と思っていたら、日本語では使えませんでした。

拡大印刷については、調べても大した情報が出てこず、困った困ったって感じでした。が、誰でも閲覧可能な場所にある「CONFIDENTIAL」と書かれたPDFに助けられました。これ、大丈夫なのか。それによると、「文字装飾コマンドを使え」とのことでした。

「文字装飾コマンド」は、「FS ! (n)」で表現されるらしく、これでググれば、「CONFIDENTIAL」ではないPDFも出てきます。安心しました。(n)は1Byteで、倍幅文字は「2ビット目を1に」、縦倍文字は「3ビット目を1」にすることで実現できます。その他、イタリックの設定もできるみたいです。これを送信してから、Shift-JISの文字列を送れば良い、ということでした。

レシートの印刷

python-escposをforkして、まとめてみました。

lrks/python-escpos
https://github.com/lrks/python-escpos

で、samples/receipt/receipt.py を実行すると…
receiptやりました。

おまけ

私が手に入れたTM-T90ですが、「電源ボタンから起動後、30秒くらいすると電源が切れる」ということで、ちょっと壊れているのかも知れません。幸い、電源を繋いでいる間は常に電源ONになるモードがあり、それを使えば解消したのですが、うーん…。なお、そのモードを使うと、電源ブチ切りの前にコマンドを発行する必要があるのですが、ほとんどやっていません。うーん…。

また、(LAN接続タイプの)TM-T90のネットワーク設定は、Windows向けユーティリティがあるのですが、そこでアドレス取得を「DHCP」にすると、Wiresharkか何かでSEIKOEPSONなMACアドレスを持つ機器に関するDHCPリクエストやレスポンスを眺める羽目になります。

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>