Phomemoにレシートプリンターのドライバーを適用・カスタムコマンド適用方法

Phomemoにレシートプリンタのドライバを適用したが、カスタムコマンドが適用できなかった。

ncos1.hatenablog.com

ncos1.hatenablog.com検証中にプリンタ設定の適用方法が適正でなかった事が判ったので再度検証。

ncos1.hatenablog.com

印刷開始前に、用紙送りする事が出来た。

\x1b\x64\x40

x40は送り長、テストなのでかなり多めを指定。

コマンドはGit参照

GitHub - vivier/phomemo-tools: CUPS driver for Phomemo M02 Label Printer

0x1b 0x64      -> command ESC d : print and feed n lines
  0x02           number of line to feed

本題は、スタートページ等に適切なコマンドを送信して正しく・無駄の少ない印刷を行 

0x1b 0x40      -> command ESC @: initialize printer

Phomemoのイニシャライズの場合

\x1b\x40

スタートドキュメント等全てのタイミングに実施したが

1回目の白紙部が、2回目に最初に印刷される動作は改善せず。

ncos1.hatenablog.com

エンドドページで

\x1b\x64\x01

のみを実施してみる。

1ラインフィードを実施する事で白紙部のデータをクリアか1回ごとに処理(次回に繰り越しさせない)できるか確認。

NG変わらず。

エプソンのESC/POSコマンドサイトから

ESC @
[名称]
プリンターの初期化
[コード]
ASCII   
ESC @
16進数     
1B 40
10進数    
27 64

Phomemoも同じESC @ なので

0x1b 0x40      -> command ESC @: initialize printer

\x1b\x40

ESC @ - TM Printer - ESC/POS Command - Tech.Reference - POS - Epson

16進数の値を参考にデータクリアをエンドページ時に実行させてみる。

download4.epson.bizDLE DC4   (fn=8)
[名称]
バッファークリア
[コード]
ASCII  
DLE DC4 fn d1 d2 d3 d4 d5 d6 d7
16進数    
10 14 08 01 03 14 01 06 02 08

10進数    
16 20 8 1 3 20 1 6 2 8

なので、

\x10\x14\x08\x01\x03\x14\x01\x06\x02\x08

変わらず、スタートドキュメント時でも変わらず。

残っている?繰り越されている?白紙データ部はエクセル側の問題かも。

(バッファークリアがPhomemoで有効かどうか判断できない為、確実ではない。)

 

エクセル以外で検証してみる。

用紙節約のため、同じ用紙で重ね印刷しているが判別できなくなったので用紙を変更。

emediterでテキスト印刷。

test 印刷後用紙の空白部を1ページ分なので、正常。

2枚目はやはり、4~5cmほど用紙送り後に印刷が開始される。

用紙節約設定で、”下”を設定

NG、印刷が行われない。

上下も同じく印字されず、NG。

”上”は印刷は問題無く実行されるが、2枚目の4~5cmの送りは発生する。

少し時間を空けると、1回目は問題ないが2回目はやはり不要な送りが発生する?

用紙を調整するためPhomemoのカバーを開けているかも?

確認、やはりカバーオープンで2枚目の不要送りがされない。

カスタムコマンドで、スタートドキュメントにイニシャライズを記述して確認。

NG、結果は変わらず。(すべてのタイミングに入れてもNGだった。)

用紙送りのテストは正常に送られる事が確認できた。

\x1b\x64\x10

emediter側でプリンタの切り替え等は不要で変更が適用された。

やはり、変更の適用などはエクセル(マイクロソフト製品全般?)の問題と思われる。

 

一旦、状況整理

emeditorでも連続で印刷する場合は、2回目以降で最初に不要な送りが発生する。

エクセルの印字でセルデータ印刷後停止していたが、いつからかセルデータ印刷後に空白部を印刷動作する様になっている。(ドライバーの適用問題などで混乱しているにで後に整理が必要)

2回目の不要用紙送りは、本来プリンタの用紙節約で回避できると思われる。

問題はPhomemoがESC/POS準拠ではないので、用紙節約設定が適用されていないと思われる。

カスタムコマンドでイニシャライズを実行すれば良さそうだが効果がなかった。

余白部が送られてしまうので、手動で戻し・調整するので現在の状況で実際は問題は無い。

理想的なのは、余分な白紙部を印刷動作せず停止・続けて印刷する場合に開始時に余分な送り動作をしない状態だが難しそう。

レシートプリンターで可能かどうか検証してみよう。