BLOGTIMES
«Prev || ... 296 · 297 · 298 · 299 · 300 · 301 · 302 · 303 · 304 ·... | | Next»
2019/04/09

Raspberry Pi を使ってレシートプリンタから印刷してみる

raspberrypi  python  printer 
Symcode 58MM USB サーマルレシートプリンター ESC/POS プリント指令セットと両立コクヨ 感熱ロールペーパー ハンディターミナル用 20m 幅58×直径40mm RP-TH584H
サーマルプリンタによる印刷 - Raspberry Pi を使ってレシートプリンタから印刷してみる

今日はラズパイを使ってレシートプリンタの制御に挑戦してみました。

今回は Amazon で売っていた中国製の「Symcode 58MM USB サーマルレシートプリンター ESC/POS」安いプリンタを使います。この手のレシートプリンタは ESC/POS というエプソンが作ったプロトコルに対応したものが多いようです。ドットインパクトの ESC/P などと同じく、EPSON の規格がデファクトスタンダードなんですね。

まずは udev の設定から

USB 接続ですが Linux だと自動的に認識されないので、lsusb を見てみます。

pi@raspi:~$ lsusb Bus 001 Device 006: ID 0416:5011 Winbond Electronics Corp. Virtual Com Port Bus 001 Device 005: ID 04ca:005a Lite-On Technology Corp. Bus 001 Device 004: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

このプリンタはどうやら ID 0416:5011 で認識されているものみたいですね。
一般ユーザーからもこのデバイスにアクセスできるように udev にルールを追加して、udev のルールを読み込ませてやります。

sudo tee -a /etc/udev/rules.d/99-usbescpos <<EOS SUBSYSTEM=="usb", ATTRS{idVendor}=="0416", ATTRS{idProduct}=="5011", MODE=="0666" EOS sudo udevadm control --reload-rules sudo udevadm trigger

python-escpos を使ってみる

今回は Python から ESC/POS を話すことができる python-escpos*1 を使います。

インストールは pip で一撃です。

pip install python-escpos

python-escpos では通常の状態では日本語が出ないので、Pillow*2 と TTF フォントを使って、日本語の入った画像を生成し、これをプリンタから出力させてみます。
このあたりの処理はグラフィック液晶で日本語を描画するのと同じような要領ですね。

今回のフォントは Circle M+ 1m*3 を使っています。

サンプルとしてはこんな感じのプログラムになりました。

escpostest.py

from escpos.printer import Usb from escpos import * from PIL import Image from PIL import ImageDraw from PIL import ImageFont width = 500 height = 250 image = Image.new('1', (width, height), 255) draw = ImageDraw.Draw(image) font = ImageFont.truetype('circle-mplus-1m-regular.ttf', 50, encoding='unic') draw.text((0,0), "日本語も出るよ"+" ", font=font, fill=0) font = ImageFont.truetype('circle-mplus-1m-regular.ttf', 28, encoding='unic') draw.text((0,82), "abcdefghijklmnopqrstuvwxyz", font=font, fill=0) draw.text((0,112), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", font=font, fill=0) draw.text((0,142), "1234567890"+" ", font=font, fill=0) draw.text((0,172), "!\"#$%&'()=~|+*<>?_{}"+" ", font=font, fill=0) p = Usb(0x0416, 0x5011, 0) p.text(" Hello World\n") p.image(image) p.cut()

これでラズパイの活用の幅もさらに広がりそうです。


at 21:22 |
2019/04/09

「ハードウェアの安全な取り外し」はもういらない?

windows10  usb 
クイック削除 - 「ハードウェアの安全な取り外し」はもういらない?

最近の Windows 10 は USB のデバイスのポリシーが高パフォーマンスからクイック削除にデフォルトが変更されているので、ハードウェアの安全な取り外しを選択する必要がなくなっているようです。

これ、ライトキャッシュを使うか使わないかという設定ですが、HDD などを除けば高パフォーマンスにする必要がないんですよね。。。。

「Windows 10」、USBなど取り外しポリシーのデフォルトが「安全な取り外し」から「クイック削除」に - CNET Japan

これまで、書き込み可能な外付けUSBドライブで安全な取り外し操作が必要だったのは、Windows 10のデフォルトの設定が、変更された内容をすぐにドライブに書き込む「クイック削除」ではなく、書き込みキャッシュを有効化し、速度を向上させる「高パフォーマンス」になっていたからだ。だが、TechRadarが報じたように、Microsoftはこのデフォルト設定を「クイック削除」に変更した。


    at 19:55 |
    2019/04/08

    コンパクトな XQD カード リーダー

    xqd  D850  D500 
    XQD カード リーダー SD カード リーダー USB3.0 高速転送 5Gbps メモリ カードリーダー SD/SDHC/SDXC/XQD/Sony Gシリーズ/Lexar USBマークカード Mac OS Windows Linux対応 iMac Macbook (ブラック)

    カメラが2台とも XQD になってしまったので、持ち運び用にコンパクトな XQD カードリーダーを購入してみました。
    メーカー名とか何も書いていないシンプルなデザインのものですが、普通に読み書きはできているようです。


      at 22:55 |
      2019/04/08

      紅くて綺麗に押せる朱肉

      stationery 
      新朝日 朱肉 SACOS スーパーエース 50号 NSA-50

      今の職場はシャチハタのインクが切れるほど、ペーパーレスにはほど遠い職場です。

      とうとう普通の朱肉のインクも薄くなってきてしまったので、一般的なものよりも紅くて綺麗に押せると評判の新朝日のスーパーエース朱肉*1を購入してみました。今まで印影がかすれるのは印鑑を押すときの力が足りないのだと思っていましたが、これは力を入れずとも印影が細かい所までクッキリ紙に写りますね。


      at 12:55 |
      2019/04/07

      ターミナル上に QR コードを表示する

      barcode 
      qrencode - ターミナル上に QR コードを表示する

      先日、Krypton をセットアップしたときに、コンソールにでかでかと QR コードが表示されてちょっと驚いたのですが、僕が知らなかっただけでこれを実現するためのライブラリが意外と前から存在していたようです。

      すでにちゃんとパッケージになっているので、apt や yum 一撃でインストール可能です。

      # Ubuntu sudo apt -y install qrencode # CentOS sudo yum -y install qrencode

      試しにこのブログの URL の QR コードを以下のコマンドで生成してみましたが、ちゃんとスマホで読み取れますね。

      qrencode -t ANSI http://blog.cles.jp

      なかなか便利なので覚えておこうと思います。


        at 22:22 |

        Active Directory を LDAPS に対応させる

        windowsserver  ssl  ldap 
        MMC スナップイン - Active Directory を LDAPS に対応させる

        Active Directory ドメイン サービス (AD DS) は単純にサーバをセットアップしただけでは証明書がないので LDAPS が使えません
        通常の AD 運用においてはこれでも特に問題ないのですが、一部の作業(パスワードの変更など)は LDAPS 経由でないと行えないことがあります。

        OpenSSL で証明書が作りたい!

        証明書の作成は Windows 上で行うことが一般的なのかもしれませんが、今回は以下の手順を参考に OpenSSL で証明書を生成してみました。

        基本的には手順通りなのですが、ハマりやすいポイントとしては証明書が以下の条件を満たす必要があることです。

        1. サーバの FQDN や IP アドレスが Common Name や SAN に設定されていること
        2. 拡張キー使用法(Extended Key Usage)にサーバー認証 (1.3.6.1.5.5.7.3.1) が含まれていること
        3. 証明書が信頼されていること

        これを満たすように OpenSSL を使って証明書を作ると以下のような感じになります。

        # キーと証明書の生成 openssl req \ -new \ -newkey rsa:2048 \ -days 3650 \ -sha256 \ -nodes \ -x509 \ -subj "/CN=domain.example.com" \ -extensions SAN \ -config <( cat /etc/ssl/openssl.cnf <(printf "[SAN]\nextendedKeyUsage=1.3.6.1.5.5.7.3.1\nsubjectAltName=\ 'DNS:adserver1.domain.example.com,\ DNS:adserver2.domain.example.com,\ DNS:10.10.10.10,\ DNS:10.10.10.11'\ ")) \ -keyout adserver.pem \ -out adserver.pem # インポート時のパスワードの設定を求められるので、パスワードを2回入力する cat adserver.pem | openssl pkcs12 -export -out adserver.p12 -name "adserver key"

        あとは MMC スナップインから証明書を「個人\証明書」と「信頼された証明書\証明書」にインポートするだけです。
        作業が完了したらサービスから Active Directory Domain Service を再起動すれば反映されます。

        最後にDOS 窓から LDAPS のポートが開いてるか確認をして、ldp.exe を使って SSL 接続してみれば動作確認もできます。

        netstat -na | find ":636"

          at 19:29 |
          2019/04/06

          リモートデスクトップで Alt + PrtSc と同じことをするには

          windows  rdp 
          ソフトウェアキーボード - リモートデスクトップで Alt + PrtSc と同じことをするには

          Windows で Alt + PrtSc を押すと、アクティブなウィンドウだけのスクリーンショットを撮ることができます。

          これと同じことをリモートデスクトップ内ののアクティブなウィンドウに対して行おうとすると、一筋縄ではいきません。
          Alt + PrtSc を押すと、リモートデスクトップ全体のスクリーンショットになってしまいます。
          これが何とかならないかと思って調べてみたら、Ctrl + Alt +テンキーの[-]*1でいけることが分かりました。

          ThinkPad にはテンキーがないので・・・

          ただ、僕の使っている ThinkPad X1 Carbon にはテンキーや NumLock 機能がないので物理的にテンキーの[-]を押すことができません。
          これについては、lenovo のサポートがソフトウェアキーボードでなんとかしろと言ってるので、おとなしくこれに従うことにします。


          at 21:55 |

          宮城も桜のシーズンに

          miyagi  観桜 
          しだれ桜 - 宮城も桜のシーズンにソメイヨシノ - 宮城も桜のシーズンに
          ソメイヨシノは咲始め - 宮城も桜のシーズンにつくし - 宮城も桜のシーズンに

          今週は打ち合わせのために実家で過ごしていますが、天気が良いので近くに散歩に出かけてみました。
          東京のさくらは既にピークを過ぎて散り始めていますが、宮城の桜はちょうど5分咲きくらいでしょうか。

          ツクシやヨモギのあちこちに生えていて、春真っ盛りという感じです。


            at 15:03 |
            2019/04/05

            Krypton でパスワードレスな ssh 生活を

            ssh  2fa 
            Krypton - Krypton でパスワードレスな ssh 生活を

            最近はウェブでも FIDO や WebAuthn などのパスワードレス認証の普及が進んでいます。

            SSH でも古くから公開鍵認証があり、これを使うとパスワード入力はほとんどせずに済むのですが、秘密鍵を安全に持ち運ぶことが難しかったり、ssh-agent のアクセス制限はあまり柔軟ではなかったりという問題がありました。これを解決してくれる Krypton というサービスを見つけました。

            動きととしては ssh 認証しようとすると、スマホに画像のような PUSH 通知が来るので、これに OK してやるとサーバにログインできるというものです。
            ssh-agent をスマホ側に持たせたるようなイメージでしょうか。

            早速セットアップしてみる

            セットアップ方法は簡単で、スマホにアプリをインストール

            ssh 元になる端末に kr というコマンドを導入

            curl https://krypt.co/kr | sh

            端末とスマホをペアリングという3ステップで使い始めることができます。
            以下のコマンドを入力すると、端末に QR コードが表示されるので、これをアプリで読み取ります。
            公開鍵が表示されるので、これをログイン先のサーバに登録しておきます。

            kr pair

            あとは普通に ssh を使って他のサーバにログインするだけでOK。
            言われてみればそれほど難しい仕組みではないような感じもしますが、これは久しぶりに目から鱗でした。


              at 23:55 |

              レジストリから Windows 10 のデスクトップに PC を表示させる

              windows10 

              Windows 10 ではデフォルトではデスクトップに PC のアイコンが表示されていません。
              これについてはデスクトップ アイコンの設定*1を弄ることで、解決することができますがユーザーが多いといちいち設定していられないと言う問題があるので、グループポリシーをを使って強制的に表示させる方法を試してみました。

              とはいえ、GPO にはデスクトップアイコンを表示させる設項目はないので、「デスクトップにアイコンを表示する」を参考に、レジストリのHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel に対して {20D04FE0-3AEA-1069-A2D8-08002B30309D} というキーを作成し、dword 値を 0 を設定するようにしてみました。

              Windows 10 時代の人はデスクトップに PC アイコンがなくても問題ないものなんですかね。。。。。


              at 17:12 |
              «Prev || ... 296 · 297 · 298 · 299 · 300 · 301 · 302 · 303 · 304 ·... | | Next»