IoT企業社内便利ツール② ラベルプリンターをIoT化する / Akerun Advent Calendar 13日目

この記事はAkerun Advent Calendar 13日目の記事です。

今回はフォトシンスCTOの@kazuphが担当しますよ( ・`д・´)b

今日は以前のbuildersconでも少し取り上げたラベルシールプリンターをIoT化した話です!

目的

社内での出荷作業の一部で二次元QRコードのシールを同梱したり、製品に貼ったりすることがあるので、そのQRコードを生成してます。 業者に依頼することもできるのですが、センシティブな情報も含むことがあるので、全部自社内でやっています。

ラベルプリンターを用意する

www.brother.co.jp

ブラザー工業 PCラベルプリンター P-touch P750W PT-P750W

ブラザー工業 PCラベルプリンター P-touch P750W PT-P750W

要件的にこれで良かったので、これにしました。もっと高価でシールの解像度が高いものもあります。

SDKを確認する

幾つか操作方法があります。

今回は「アプリケーション開発ツール b-PAC(Brother P-touch Applicable Component)」というものを使用しました。

www.brother.co.jp

b-PAC (Brother P-touch Applicable Component)は、弊社P-touch(ピータッチ)シリーズのハードウェアに出力するコンポーネントです。 専用エディターを使用することなく、Microsoft® Visual Basic® 、Microsoft® Excel® 、VB Script等で作成されたお客様のシステムから簡単に出力できます。(プログラマーはラベルテンプレートファイルを作成するために専用エディターの操作を覚える必要がありますが、開発されたプログラムを使用し、実務にてラベル出力を行う方は、専用エディターの操作を覚える必要はありません。)

う、MS、、、VB、、、となったのですが、

もっと調べるとちゃんとJSでも使えました。

www.brother.co.jp

f:id:photosynth-inc:20161213131537p:plain

Jscript (for Internet Explorer®)

Jscript、、、なにそれ?)

心の声はさておき、どうやらInternet Explorerでなら、JSでSDKが動く!ということがわかりました。

印刷用サンプルスクリプト

SDK(bpac.Document)とテンプレ(qr.lbx)を指定して印刷を実行してます。

function printLabel() {
    var bpac = new ActiveXObject("bpac.Document");
    var lbxPath = "C:\\templates\\qr.lbx";
    var code = $("#code").data("code");
    if (bpac.Open(lbxPath) != false) {
        bpac.GetObject("code").Text = code;
        bpac.StartPrint("", 0);
        bpac.PrintOut(1, 0);
        bpac.Close();
        bpac.EndPrint();
    } else {
        console.log("fail...");
    }
}

うん、普通にJSですね。

SDKをインストールする

このままだと動かないので、SDKをインストールして、テンプレも指定のパスに設置します。

https://online.brother.co.jp/dev/Top.aspx

SDKをインストールするためにここで新規登録を行います。

ログインできたら「Windows用開発ツール」ページにて必要物をダウンロードします。

・b-PAC SDK (64bit版) ・b-PAC クライアント用コンポーネント (64bit版)

bitは適切な方を選んでください。ダウンロードしたらインストールします。

あ、当然ですが、Windowsでしか実行できません。僕はPallarelsにて実施しました。

印刷用テンプレを準備する

ソフトウェアダウンロード | PT-P750W | 日本 | ブラザー

ここからエディタツールをダウンロードしてください。 もちろんドライバーがまだならそれも。

このツールで自由にレイアウトしたシールを作成できます。

実行

実行環境: Windows 10 IE 11

f:id:photosynth-inc:20161214103347g:plain

とりあえずこれでブラウザからの印刷ができるようになりました。

※ブラウザから自動で実行する場合は、IEの設定からセキュリティを落とす必要があるかもしれません。

IoTにする部分

ブラウザで実行できたということは、あとはトリガーを入れるだけです。 この辺は別途サーバーとWebSockedで繋いだり、単にAjaxするなど、色々な方法があるので、各々適切な方法を選んでください(あとは丸投げ)。

まとめ

ということで、こんな感じでラベルプリントもよりWebっぽくIoT化できる方法を紹介しました。

Akerunをつくっている株式会社フォトシンスでは、APIやWebツールを一緒に盛り上げてくれるRailsエンジニアを募集しています! www.wantedly.com

Akerun Developersサイトもやってます。Akerun APIについては、こちらをご覧ください。 photosynth-inc.github.io