DP-EH600はobnizからUARTインタフェースで出力できるサーマルプリンタです。感熱ロール紙を使用します。
アプリケーションから簡単にこのプリンタを使うためのobnizパーツライブラリの説明です。

DP-EH600の電源と信号線の両方のコネクタをobnizに接続します。DP-EH600のコネクタはメスのため、obnizに両端オスのピンヘッドを挿すと接続が便利です。
もし、プリンタからRTS信号を引き出している場合は、この信号線もobnizに接続します。
| name | color | required | description |
|---|---|---|---|
| vcc | 赤 | 任意 | 電源線(プラス) |
| gnd | 黒 | 任意 | 電源線(マイナス) |
| tx | 黄 | 必須 | RX線(プリンタのRXをobnizのTXへ) |
| rx | 緑 | 必須 | TX線(プリンタのTXをobnizのRXへ) |
| gnd2 | 黒 | 必須 | GND線 |
| cts | 灰色 | 任意 | RTS線(プリンタのRTSをobnizのCTSへ) |
| baud | - | 必須 | 通信速度(ボーレート) |
vccとgndは省略します。ctsは省略します。//Javascript
const pr = obniz.wired('DPEH600', {gnd:0, vcc:1, gnd2:9, tx:10, rx:11, baud:115200, cts:7});
pr.init();
プリンタを初期化します。引数にサーマルヘッド関係のパラメタを指定します。省略可すると下記のデフォルト値を設定します。
| name | description | required | default |
|---|---|---|---|
| heatedPoint | ヘッドの加熱一回あたりに印刷するドット数 | 任意 | 5 |
| heatTime | ヘッドの加熱時間 | 任意 | 100 |
| heatInterval | ヘッド加熱間隔 | 任意 | 40 |
//Javascript
const pr = obniz.wired('DPEH600', {gnd:0, vcc:1, gnd2:9, tx:10, rx:11, baud:115200, cts:7});
pr.init({heatedPoint:5, heatTime:100, heatInterval:40});
引数に指定した文字列を印刷します。配列で複数の文字列を指定すると、各文字列ごとに改行して印刷します。
//Javascript
pr.printText('テキストを印刷します');
pr.printText(['1行目のテキスト', '2行目のテキスト', '3行目のテキスト']);
印刷するテキストを修飾します。
| name | description |
|---|---|
| fontB | font-Bを使用する場合にtrue。falseまたは省略するとfont-Aを使用します。 ・font-A:12 x 24 ・font-B:9 x 17 |
| invert | 白抜き文字(背景黒)を使用する場合にtrue。falseまたは省略すると通常の印字。 |
| bold | ボールド(太文字)を使用する場合にtrue。falseまたは省略すると通常の印字。 |
| higher | 縦2倍のフォントを使用する場合にtrue。falseまたは省略すると通常の印字。 |
| wider | 横2倍のフォントを使用する場合にtrue。falseまたは省略すると通常の印字。 higherとwiderの両方にtrueを指定すると4倍のフォントになる。 |
| deleteline | 打ち消し線を使用する場合にtrue。falseまたは省略すると通常の印字。 (何故か機能しない) |
| underline | アンダーライン下線)を使用する場合にtrue。falseまたは省略すると通常の印字。 |
| align | ‘L’を指定するか省略すると、左寄せで印字する。 ‘C’を指定すると、中央寄せで印字する。 ‘R’を指定すると、右寄せで印字する。 |
| upsidedown | 天地逆に印刷する場合にtrue。falseまたは省略すると通常の印字。 (この場合、alignの’L’と’R’も逆になる) |
| rotation | 右に90°回転して印刷する場合にtrue。falseまたは省略すると通常の印字。 |
//Javascript
pr.setPrintMode();
pr.printText("normal text");
pr.setPrintMode({fontB:true});
pr.printText("fontB");
pr.setPrintMode({invert:true, align:'C'});
pr.printText("invert center-align");
pr.setPrintMode({bold:true, align:'R'});
pr.printText("bold right-align");
pr.setPrintMode({higher:true, wider:false});
pr.printText("higher");
pr.setPrintMode({higher:false, wider:true, align:'R'});
pr.printText("wider");
pr.setPrintMode({higher:true, wider:true, align:'C'});
pr.printText("higher & wider");
pr.setPrintMode({underline:true, align:'C'});
pr.printText("underline");
pr.setPrintMode({upsidedown:true, align:'C', underline:false});
pr.printText("upsidedown");
pr.setPrintMode({rotation:true});
pr.printText("noitator");
pr.setPrintMode();
紙を送ります。引数に改行数を指定します。省略時は1行分の紙を送ります。
//Javascript
pr.printText('テキスト');
pr.linefeed(2); //2行分の紙送り
タブコードの水平位置を配列で指定します。タブコード'\t'を使用しない場合は設定の必要はありません。
例)タブ位置を3文字目、7文字目、15文字目とする場合、[2, 6, 14]と指定します。
//Javascript
pr.setTabs([2, 6, 13]);
pr.printText('1234567890');
pr.printText('\t3文字目のテキスト');
pr.printText('\t\t7文字目のテキスト');
pr.printText('\t\t\t14文字目のテキスト');
バーコードを印刷します。
barcodeTypeにバーコードの種類を指定します。
| barcodeType | description | codeの桁数 | 備考 |
|---|---|---|---|
| upc_a | UPC〜A | 11〜12 | |
| upc_e | UPC〜E | 11〜12 | |
| ean13 / jan13 | EAN13 / JAN13 | 12〜13 | |
| ean8 / jan8 | EAN8 / JAN8 | 7〜8 | |
| code39 | CODE39 | 1〜 | |
| itf | ITF | 2〜 | ただし、偶数桁 |
| codebar | CODEBAR | 1〜 | |
| code93 | CODE93 | 1〜 | |
| code128 | CODE128 | 2〜 |
codeに印刷するコードを指定します。
codeの文字列を印刷する場合、印字位置をposに指定します。
| pos | description | remark |
|---|---|---|
| 0 | 印字しない | |
| 1 | バーコードの上に印字 | |
| 2 | バーコードの下に印字 | default |
| 3 | 上下両方 |
//Javascript
pr.printBarcode(pr.barcodeType.jan13, "4901234567890", 2);
注)QRコードの印刷は、後述のdrawContext()を参照してください。
白黒のビットマップを印刷します。
| name | description | remark |
|---|---|---|
| bitmap | 白=0、黒=1の配列データ。配列のサイズはwidth*heightであること。 |
|
| width | bitmapの横幅。width<384の場合は右側余白となります。width>384の場合はエラーになります。 | |
| height | bitmapの高さ。height>widthとなるように必要によりビットマップを回転しておくこと。 | |
| reverse | 白=1、黒=0の配列データの場合にtrueを指定する。省略時はfalse。 |
//Javascript
const imageData = context.getImageData(0, 0, width, height).data;
const bwBitmap = dithering(imageData, width, height); //白黒化
pr.printBitmap(bwBitmap, width, height);
contextのデータを印刷します。ライブラリ内ではコンテキストから単純な白黒画像を生成して、上記のprintBitmap()を呼び出しています。
| name | description | remark |
|---|---|---|
| context | コンテキストを指定します。 | |
| x | 印刷するコンテキスト領域のx座標を指定します。省略すると0を仮定します。 |
|
| y | 印刷するコンテキスト領域のy座標を指定します。省略すると0を仮定します。 |
|
| width | 印刷するコンテキスト領域の横幅を指定します。省略するとキャンバスのclientWidthを仮定します。 |
|
| height | 印刷するコンテキスト領域の高さを指定します。省略するとキャンバスのclientHeightを仮定します。 |
以下はqrcode.jsを利用して、QRコードをプリンタに出力するサンプルです。
//HTML
<div id="qrcode"></div>
<script>
//Javascript
$('#qrcode').qrcode({width:64, height:64, text:"http://obniz.io"});
pr.drawContext($("#qrcode")[0].children[0].getContext('2d'));
</script>
上記画像の印刷したQRコードはスマホで正しく認識できました。
紙切れの場合にfalseを返します。紙がある場合はtrueを返します。
//Javascript
console.log(async hasPaper());
注)印字データをすべてプリンタに送った後で使用すること。印字データの途中でこの関数を呼び出すと、印刷が途中で中断されてしまうようです。
プリンタのステータスを返します。
//Javascript
console.log(async getStatus());
注)印字データをすべてプリンタに送った後で使用すること。印字データの途中でこの関数を呼び出すと、印刷が途中で中断されてしまうようです。
プリンタ内のバッファをクリアし、setPrintMode()で指定した修飾を全てリセットします。
テストプリントを出力します。パネル左上のボタンを押しながら電源が投入されるとテストプリントが出力されますが、これと同じ動作をアプリケーションから指示する場合にこの関数を使用します。