POSプリンターで遊ぶ-5

| | コメント(0)
まず、内蔵の漢字フォントを利用するために、漢字モードに切り替える必要がある。具体的には、「fetch_rss-master」内の「output_prn.py」で以下のコマンドを用いる。

(文字コードと漢字モードの指定)
prn.text('\x1c\x43\x01') # Shift-JIS
prn.text('\x1c\x26')     # Kanji-mode

さらに、ソースHPの名称を24ドットフォントの縦倍角に、記事のタイトルの文字を強調表示にするため以下のコマンドを用いる。

(倍角24ドットフォントの指定)
prn.text('\x1b\x21\32') # 24dot + Size-2X

(24ドットフォントの指定)
prn.text('\x1b\x21\0')	# 24dot

(フォントの強調表示の指定:二重印刷)
prn.text('\x12\x21\1')  # double print on

(フォントの強調表示の解除)
prn.text('\x12\x21\0')  # double print off

これらの修正を加えた「output_prn.py」は、以下の通りとなる。
# Copyright (C) 2012 Vivek Haldar
#
# Take in a dict containing fetched RSS data, and output to printable files in
# the current directory.
#
# Dict looks like:
# feed_title -> [list of articles]
# each article has (title, body).
#
# Author: Vivek Haldar 

import codecs
import escpos
from datetime import datetime
import textwrap
import output

class OutputPrn(output.Output):
    def output(self):
        articles = self._articles
        for f in articles:
            prn = escpos.Escpos('%s.prn' % f.replace('/', '_'))

            prn.text('\x1c\x43\x01') # Shift-JIS
            prn.text('\x1c\x26')     # Kanji-mode

            for a in articles[f]:
                title, body = a

		prn.text('\x1b\x21\32') # 24dot + Size-2X
                prn.text(f + '\n')
		prn.text('\x1b\x21\0')	# 24dot
	        prn.text('\x12\x21\1')  # double print on
                prn.text(title + '\n')
	        prn.text('\x12\x21\0')  # double print off

                prn.text(body)

                prn.text('\n\n\n')
                prn.flush()

上記の一連の修正を行った後、コマンドプロンプトから以下を入力する。
「python vh_fetch.py --prn 1」
(因みに、末尾の「1」は、一日分のフィードを取得するという意味である)
プリンターはシリアルポートに接続されているので、次のコマンドでデータを転送する。
「copy GIGAZINE.prn /b com1」
実際に出力してみると、以下のようになる。やはり文字修飾が使えると見栄えが良い。印字速度も劇的に改善された。
blm-58-5.png
という訳で、サーマルPOSプリンターを巡る試行錯誤は、一応の決着を見ることになったが、これは我ながら随分と屈折した趣味だと思う。RSSフィードなどスマートフォンで見れば十分事足りるのに、それをわざわざ短冊のようなペナペナの感熱紙に出力して紙媒体で読もうというのだから。知人の波多利郎氏に「理解不能」と切って捨てられたのも宜なるかなである。
とは言え、ここに至るまでかかったコストは、最初の洋物プリンターが約5,000円、新古品のPOSプリンターが送料込で約2,500円、ケーブルとヌルモデムで約2,000円、感熱紙はLittle Printer用のものを転用したので0円ということで、総額9,500円である。飲み会二回分でこれだけスリリングな艱難辛苦を「楽しめた」ので世捨て人の暇つぶしには格好の材料であったと思っている。
なお、ここに記したプリンター制御コードは、三栄電気製のBLM-58で実装されているものである。他社製のサーマルPOSプリンターでの動作を保証するものではないので、ご注意願いたい。

コメントする

pyccapをフォローしましょう

アーカイブ