ポケコンを買って今度はプリンタを買って印刷をしてみることをした。
今回Amazonで買ったプリンタはエプソンのTM-T88IVというものだ。
中古で2,980円+送料手数料740円で合計3,720円と手ごろな値段。
当初の考えていたArduinoのプリンタシールドよりもはるかに安い。
しかし、ちょっとでかいしちょっと重い。
ACアダプタの大きさも半端ない。
これに感熱紙ロールを追加で買って印刷を行う準備をする。
『ポケコン・エレクトロニクス』に掲載されているセントロニクス・インターフェイスの回路図をもとに基板を組む。
たしか高校生の頃にも作ったはずだが、もう残ってないはず。
あの頃よりも配線はきれいにできているはずだ。
次に、ポケコンとプリンタをつなぐ。
アンフェノールコネクタなんてかなり久々に見た気がする。
14ピン-36ピンのケーブルなんて見かけないので自作する。
製作費の半分以上がこのコネクタに掛かってんじゃないだろうか。
実際につないで印刷してみたところ。
左は文字コードを印刷するプログラムを実行したところで、右はLLISTでプログラムを印刷しているところ。
BASICなんて何年ぶりだろうか。
ちなみにLLISTで印刷するためには、まずOPEN ”LPRT:”コマンドでプリンタポートを開く必要がある。
ちなみにインターフェース基板にLEDを追加している。
一番上にポケコンの電源表示の赤LED
二番目以降はオレンジのLEDで、ポケコンのXOUT(クロック)
三番目にポケコン側のBUSY~プリンタ側の/STROBE
四番目にプリンタ側のBUSY~ポケコン側のACK
ところが、二番目のBUSYは基本点灯しっぱなし(実際は点滅しているはず)
三番目のBUSYは消灯(一瞬だけついているのだろうけど視認できない)
唯一わかりやすいのは4番目のプリンタ側のBUSYだけだった。
印刷中に一瞬点灯することがあるし、プリンタ側でエラーなどが発生すると点灯する。
上の写真は、ロール紙のカバーを開けてプリンタ側でエラー状態にしている状態で、インターフェース基板上のLEDが点灯しているところ。
次に、印刷したものを並べてみる。
なぜ2種類あるかというと、プリンタの文字コードセットがデフォルトではポケコンのコードとは異なっているのである。
プリンタの制御コードでESC/Pというものがあるが、このプリンタはESC/POSというもので制御している。
どうやらPOS用に特化した制御コードらしいが、基本的に使い方は似たようなもののようだ。
ただ、エプソンのサイトに登録しないとESC/POSの資料はもらえないようだが、ググってみたら資料はそれなりに見つかる。
ググった結果、シチズンの「モデル:CMP-20/30」用のコマンドリファレンスが見つかったので、それをもとに設定を変えてみる。
左がデフォルトの状態、右が国際文字セットとページ1を指定したもの。
&HF8(0xF8)以降の文字が異なっているが、まあ特に大きな問題ではなかろう。
デフォルト設定のまま
10:OPEN "LPRT:" 20:LPRINT " 0123456789ABCDEF" 30:LPRINT "---------------------" 40:FOR H=&H20 TO &HF0 STEP &H10 50: CC$="" 60: FOR L=0 TO 15 70: CC$=CC$+ CHR$ (H+L) 80: NEXT 90: LPRINT HEX$ H;" : ";CC$ 100:NEXT 110:FOR I=1 TO 10 120: LPRINT 130:NEXT 140:CLOSE 150:END
文字コードの初期化をして日本語の文字コードに設定。
20行目でESC tで文字コードテーブルの選択(ページ1カタカナ)
30行目でESC Rで国際文字セットの選択(日本)
10:OPEN "LPRT:" 20:LPRINT CHR$ &H1B;"t"; CHR$ 1 30:LPRINT CHR$ &H1B;"R"; CHR$ 8 40:LPRINT " 0123456789ABCDEF" 50:LPRINT "---------------------" 60:FOR H=&H20 TO &HF0 STEP &H10 70: CC$="" 80: FOR L=0 TO 15 90: CC$=CC$+ CHR$ (H+L) 100: NEXT 110: LPRINT HEX$ H;" : ";CC$ 120:NEXT 130:FOR I=1 TO 10 140: LPRINT 150:NEXT 160:CLOSE 170:END
プリンタインターフェースのほかに、カセットインターフェースも作った。
こちらも高校時代に作ったが、実装密度は2倍近くになってサイズは約半分ぐらいになっているはず。
一応、ステレオプラグを使うかアナログプラグを使うかでジャンパーピンで選択できるようにしている。
時間がなかったので、手書きなのはご愛敬、
追記 2017/07/20
ESC/POSのコマンドリファレンスで、他にもいいものがあったので忘備もかねて記載しておく。
三栄電機プリンターコマンドリファレンス
ESC/POS – Epson
FAQ for ESC/POS