人気ブログランキング | 話題のタグを見る

暑い日

一目惚れさらに スケッチ忘備録

連投です。
AS-289Rのコマンドの部分を忘れそうなので、忘備録代わりに!

ナダ電子さんに、教えて頂いた後は、スムーズ行きました。
基本は、ArduinoのSerial.write()で、バイト配列で送れば、OK
全部のコマンドを試してないけど、文字サイズの変更(伝言メモに使った)縦n倍横n倍と、文字のドット数変更、印字位置指定、バーコード印刷は、各種のバーコードで、印刷してバーコードスキャナで、読み込み出来ました。

このプリンター結構使えます、しかも簡単に!

ですが、結構コマンドの配列作るの面倒なので、ライブラリー化しちゃおうかなぁーと思っておます。

縦n倍横n倍のコマンドは、こんな感じです(ナダ電子さんに頂いたまんまですが)

byte fse2[] = {0x1C,0x65,0x32,0x32};
byte fse1[] = {0x1C,0x65,0x32,0x31};
byte fse0[] = {0x1C,0x65,0x31,0x31};

fse2が縦2倍横2倍
fse1が縦2倍横1倍
fse0が縦1倍横1倍

あと、スケッチは消しちゃったけど、漢字フォントのドット数変更は、こんな感じ

byte dc2s16[] = {0x12,0x53,0x31};
byte dc2s24[] = {0x12,0x53,0x30};

「伝言メモプリンター」のスケッチは、これ
コマンドは、一度「縦1横1」を送った後に、希望する「縦n横n」のコマンドを送る(コマンドリファレンスに書いてありました。)

byte fse2[] = {0x1C,0x65,0x32,0x32};
byte fse1[] = {0x1C,0x65,0x32,0x31};
byte fse0[] = {0x1C,0x65,0x31,0x31};

byte escCrean[] = {0x1B,0x40};

byte dc2s16[] = {0x12,0x53,0x31};
byte dc2s24[] = {0x12,0x53,0x30};


void setup() {
Serial.begin(9600);
Serial.write(escCrean,2);
}

void loop() {
char buf[1000];
int cont = 0;
do {
if(Serial.available()) {
buf[cont] = Serial.read();
cont++;
}
if(cont > 1000) {
break;
}
}while(buf[cont - 1] != 0x0D);
buf[cont] = '\0';
//Serial.println(sizeof(buf));
//Serial.println(cont);
}

void printMessage(char str[]){
char *atena, *yoken, *hiduke, *jibun;
atena = strtok(str, ",");
yoken = strtok(NULL, ",");
hiduke = strtok(NULL, ",");
jibun = strtok(NULL, ",");

//受信文字列の判定は、してません。
//送信側のソフトで、取り敢えずやってますので、手抜きです。
//本当は、シリアル通信で、データを貰うので、データの補完とか、しないと不味いけど、自分用なので割愛
//あとは、charじゃなくてbyteの方が、良いかもchar符号付なので、途中で反転するかも?

Serial.write(fse0,4);//ここで縦1横1コマンド送信
Serial.write(fse1,4);//縦2横1コマンド送信
Serial.print('\r');
Serial.print(atena);
Serial.print('\r');
Serial.print('\r');
Serial.write(fse0,4);//縦1横1コマンド送信
Serial.print("*****************************");
Serial.print('\r');
//Serial.print('\r');
Serial.write(fse1,4);//縦2横1コマンド送信
Serial.print(yoken);
Serial.print('\r');
Serial.print('\r');
Serial.write(fse0,4);
Serial.print("*****************************");
Serial.print('\r');
Serial.print('\r');
//Serial.write(fse1,4);//縦2横1コマンド送信
Serial.print(hiduke);
Serial.print(jibun);
Serial.print('\r');
Serial.print('\r');
Serial.print('\r');
Serial.print('\r');
Serial.print('\r');
Serial.print('\r');
Serial.print('\r');
Serial.print('\r');
Serial.print('\r');
Serial.print('\r');
}

とりあえず、動いてますが、使う方は自己責任で、お願いしますm(_ _)m

macからのデータは、宛名,伝言,日付,自分の名前のカンマくぎりで、最後に'\r'を送ってます。
文字数制限は、無いけどcharの配列1000なので、多分1000byteまではいけるはず。

後は、作ったソフト以外からも、上のデータのパターンで、送れば印刷出来ます。
改行が、結構醜いので、次はスマートに、行間量の指定で、やって見ようかなと、思っています。

objective-c方は、すんごい怪しいので、後程。

最後に、丁寧に応対して下さった。
ナダ電子さんに、感謝です。
by wagtail_co | 2014-03-06 00:06 | 電子工作?
<< ミシン落札⁉︎ 一目惚れしましたAS-289R >>



ひとりごと

by wagtail_co
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31