ArduinoでGOOJPRTのコマンド使用例
Arduino等マイコンから手軽にプリントアウトしたいときサーマルプリンタが便利ですね。
AliExpress等で売っているサーマルプリンタで、最も手頃なのがGOOJPRT だと思います。
https://ja.aliexpress.com/item/GOOJPRT-QR203-58-RS232-TTL-EML203/32835660462.html?
APS ELM203-CH のマニュアルが参考になりますが結構違うところもあり、試行錯誤したので
お役に立てばと上げておきます。
ちなみに、arduinoへの接続は右下のコネクタのGNDとRX(3pin黄色)だけでOKです。もちろんプリンタ側のRXはarduinoのTXと繋ぎます。通信速度の変更は試していませんが少なくともデフォルトは9600です。電源は図右下の黒をGND 赤を+5~9Vですね。
白黒反転やピーク電流制限、逆回転(紙を戻す)や濃度設定はAPSでは定義されていますが少なくとも同じコマンドではGOOJPRTでは機能しませんでした。hackできた方いらっしゃいましたら是非教えてください。
通常のバーコードは印字させることはできましたがよくわからない部分があり、使いこなせていません。
QRコードは機能を持っていない様に思います。 バーコードについてもhackできた方是非情報下さい。
サンプルコード
私はSoftware serialはあまり好きで無いので、arduinoのTXをプリンタに繋いでおり、プリンタの電源を切って書き込んだ後電源を入れてからarduinoをリセットする という方法を採っています。
void setup() {
Serial.begin(9600);
delay(200);
//文字間ピッチ
Serial.write(0x1B);
Serial.write(0x20);
Serial.write(16);
Serial.println("abcDEF");
//行間設定
Serial.write(0x1B);
Serial.write(0x33);
Serial.write(50);//50dot 4mmくらい
Serial.println("a");
Serial.println("50");
Serial.write(0x1B);
Serial.write(0x33);
Serial.write(0);//33がデフォの様だが0でもOK
Serial.println("xxx");
Serial.println("0");
//左端余白設定 8dot/mm 約200dpi
Serial.write(0x1D);
Serial.write(0x4C);
Serial.write(50);//第一引数は x1
Serial.write(0);//第二引数はx256≒32mm
Serial.println("abCDEF");
Serial.write(0x1D);
Serial.write(0x4C);
Serial.write(0x00);
Serial.write(0x01);//第二引数はx256≒32mm
Serial.print("abCDEF");
Serial.write(0x1D);
Serial.write(0x4C);
Serial.write(0x00);//後出しでも改行しなければ同じ行に描画される
Serial.write(0x00);
Serial.println("xxxx");
//タブ設定とタブ移動
Serial.write(0x1B);
Serial.write(0x44);
Serial.write(10);//8dot単位
Serial.write(20);//8dot単位
Serial.write(0);//設定終了
Serial.print("asd");
Serial.write(9);
Serial.print("fgh");
Serial.write(9);//Serial.wirte("\t")でも可 多分 print("\t")も、、
Serial.println("xxx");
//文字コード国別指定通貨マークが変わる程度
Serial.write(0x1B);
Serial.write(0x52);
Serial.write(8);//8:日本 0:USA 他
for ( int i = 0x20; i < 0x7F; i++) {
Serial.write(i);
if (i % 32 == 0) {
Serial.println("");
}
}
//カタカナ出せる
Serial.write(0x1B);
Serial.write(0x74);
Serial.write(1);//1:カタカナ 26タイ
for ( int i = 0x80; i < 0xFF; i++) {
Serial.write(i);
if (i % 32 == 0) {
Serial.println("");
}
}
//小さいフォント
Serial.write(0x1B);
Serial.write(0x21);
Serial.write(1);
Serial.println("abCDEF");
Serial.write(0x1B);
Serial.write(0x21);
Serial.write(0);//戻す
Serial.println("abCDEF");
//n倍幅
Serial.write(0x1D);
Serial.write(0x21);
Serial.write(0x20);//16進のMSD n 倍幅 7まで
Serial.println("a");
//n倍高さ
Serial.write(0x1D);
Serial.write(0x21);
Serial.write(0x02);//16進のLSD n倍高さ 7まで
Serial.println("a");
//倍幅
Serial.write(0x1D);
Serial.write(0x21);
Serial.write(0x10);//16進のMSD 1が倍幅
Serial.println("a");
//倍高
Serial.write(0x1D);
Serial.write(0x21);
Serial.write(0x01);//16進のLSD 1が倍高さ
Serial.println("a");
//下線
Serial.write(0x1B);
Serial.write(0x2D);
Serial.write("1");//連続
Serial.print("abCDE");
Serial.write(0x1B);
Serial.write(0x2D);
Serial.write("2");//1dot というが連続している
Serial.print("abCDE");
Serial.write(0x1B);
Serial.write(0x2D);
Serial.write("0");//戻す
Serial.println("abCDE");
//90°回転右回り
Serial.write(0x1B);
Serial.write(0x56);
Serial.write("1");
Serial.println("abCDE");
//回転を元に戻す
Serial.write(0x1B);
Serial.write(0x56);
Serial.write("0");
Serial.println("abCDE");
//180°回転
Serial.write(0x1B);
Serial.write(0x7B);
Serial.write(1);
Serial.println("abcdDEFGhijklmn");
//戻す
Serial.write(0x1B);
Serial.write(0x7B);
Serial.write(0);
Serial.println("abcdDEFGhijklmn");
//右寄せ
Serial.write(0x1B);
Serial.write(0x61);
Serial.write("2");
Serial.println("abCDE");
//中寄せ
Serial.write(0x1B);
Serial.write(0x61);
Serial.write("1");
Serial.println("abCDE");
//左寄せ
Serial.write(0x1B);
Serial.write(0x61);
Serial.write("0");
Serial.println("abCDE");
}
Author And Source
この問題について(ArduinoでGOOJPRTのコマンド使用例), 我々は、より多くの情報をここで見つけました https://qiita.com/yQtaro/items/a6ecbea93971348f809f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .