So Tired !_! 逆水行舟, 不进则退!

18Aug/10

ESC/POS命令集(转摘)

Posted by Nick Xu

切纸指令:

发送:十六进制:1B69

4.1 基本控制指令

4.1.1 ESC @

[名称]   初始化打印机

[格式]    ASCII码   ESC @

十六进制码     1B 40

十进制码      27 64

[描述]   清除打印缓冲区中的数据,复位打印机打印参数到当打印机缺省参数。

[注意]   * 不是完全恢复到出厂设置,用户参数设置(见三、JPM112打印机工具软件)不会被更改。

[例子]   char SendStr[3];

SendStr[0] = 0x1B

SendStr[1] = 0x40;

PrtSendData(SendStr, 2);

4.1.2 FF

[名称]   打印并走纸到下页首

[格式]    ASCII码   FF

14/53
----------------------- 16-----------------------

用户文档 JPM112 打印机开发手册(V1.0 )

十六进制码       0C

十进制码       12

[描述]   将打印缓冲区中的数据全部打印出来并返回标准模式。

[注意]   * 打印后,删除打印缓冲区中的数据。

* 该命令设置打印位置为行的起始点。

* 如果打印纸有预印刷黑标,则打印缓冲区中的数据后,走纸到黑标处,如果打印纸无黑标,则

走纸0.5m后停止,预印刷黑标的规范请见附录B.预印刷黑标说明。

[例子]   char SendStr[2];

SendStr[0] = 0x0C;

PrtSendData( SendStr, 1);

4.1.3 LF

[名称]   打印并换行

[格式]   ASCII码     LF

十六进制码       0A

十进制码       10

[描述]   把打印缓冲区中的数据打印出来,并换行。

[注意]   * 该命令把打印位置设置为行的开始位置。

[参考]   CR

[例子]   char SendStr[2];

SendStr[0]=’\n’; //C语言中’\n’即为换行

PrtSendData( SendStr, 1);

4.1.4 CR

[名称]   打印并回车

[格式]    ASCII码    CR

十六进制码       0D

十进制码       13

[描述]   打印但不进纸。

[注意]   * 打印结束后,将下一行的开始设定为打印起始位置。

[参考]   LF

[例子]   char SendStr[2];

SendStr[0]=’\r’; //C语言中’\r’即为回车

PrtSendData(SendStr,1);

15/53
----------------------- 17-----------------------

用户文档      JPM112 打印机开发手册(V1.0 )

4.1.5 ESC J n

[名称]   打印并进纸

[格式]    ASCII码     ESC J n

十六进制码       1B 4A n

十进制码        27 74 n

[范围]    0 ≤ n ≤ 255

[描述]   打印输出打印缓冲区中的数据,并进纸n个 垂直点距。

[注意]   * 打印结束后,将下一行的开始设定为打印起始位置。

* 一个垂直点距为0.33mm,以下同。

[参考]   ESC d

[例子]   char SendStr[4];

SendStr[0] = 0x1B;

SendStr[1] = ’J’;

SendStr[2] = 3;

PrtSendData( SendStr, 3);//走纸1mm

4.1.6 ESC d n

[名称]   打印并进纸n 行

[格式]    ASCII码     ESC d   n

十六进制码   1B 64 n

十进制码        27 100 n

[范围]    0 ≤ n ≤ 255

[描述]   打印打印缓冲区中的数据并进纸n字符行。

[注意]   * 该命令设置打印起始位置为行起点。

[参考]   ESC J

[例子]   char SendStr[4];

SendStr[0] = 0x1B;

SendStr[1] = ’d’;

SendStr[2] = 2;

PrtSendData( SendStr, 3);//走纸2行

4.1.7 HT

[名称]   移动打印位置到下一个水平制表位置

[格式]   ASCII码      HT

十六进制码       09

十进制码        9

[描述]   移动打印位置到下一个水平制表位置。

16/53
----------------------- 18-----------------------

用户文档       JPM112 打印机开发手册(V1.0 )

[注意]   * 通过ESC D命令设置水平制表位的位置。

* 如果没有设置下一个水平制表位置,则该命令被忽略。

* 水平定位位置的缺省设定为字符A(6×12)的8个字符宽度(第9,17,25, … 列)。

[参照]   ESC D

[例子]   char NextPos = 9;

PrtSendData(“商品名”,6);

PrtSendData(&NextPos,1);

PrtSendData(“单价”,4);

PrtSendData(&NextPos,1);

PrtSendData(“数量”,4);

PrtSendData(&NextPos,1);

PrtSendData(“金额”,4);

4.1.8 FS U nL nH

[名称]   按Unicode编码向打印发送数据

[格式]   ASCII码       FS U nL nH

十六进制码        1C 55 nL nH

十进制码         28 85 nL nH

[描述]   打印n(n=nL+nH*256)个Unicode编码字符。

[注意]   * 因Unicode是双字节编码,此命令后的2*n(n=nL+nH*256)个字节被当作Unicode编码字符处理;

* 该指令中输入的汉字只支持GBK字库中包含的汉字,没有包含Unicode中所包含的所有汉字;

* 有关GBK的详细信息请参阅全国信息技术标准化技术委员会制定的 “汉字内码扩展规范”;

* 有关Unicode的详细信息可以参见Unicode的官方网站http://www.unicode.org

* 本命令不受汉字命令的影响,也不受自定义字符命令的影响;

* 本命令可以嵌入其他ESC/GS/FS指令,但要采用Unicode编码。

[例子]   char SendStr[64];

SendStr[0]=0x1C; SendStr[1]=’U’; SendStr[2]=11; SendStr[3]=0;

SendStr[4]=0x55; SendStr[5]=0x00; //U+0055:’U’

SendStr[6]=0x4E; SendStr[7]=0x00; //U+004E:’N’

SendStr[8]=0x49; SendStr[9]=0x00; //U+0049:’I’

SendStr[10]=0x43; SendStr[11]=0x00; //U+0043:’C’

SendStr[12]=0x4F; SendStr[13]=0x00; //U+004F:’O’

SendStr[14]=0x44; SendStr[15]=0x00; //U+0044:’D’

SendStr[16]=0x45; SendStr[17]=0x00; //U+0045:’E’

SendStr[18]=0x53; SendStr[19]=0x62; //U+6253:’打’

SendStr[20]=0x70; SendStr[21]=0x53; //U+5370:’印’

SendStr[22]=0x4B; SendStr[23]=0x6D; //U+6D4B:’测’

SendStr[24]=0xD5; SendStr[25]=0x8B; //U+8BD5:’试’

PrtSendData(SendStr,26);

PrtSendData(“\n”,1);

17/53
----------------------- 19-----------------------

用户文档 JPM112 打印机开发手册(V1.0 )

4.2 字符参数设置命令

4.2.1 ESC ! n

[命令] 选择打印模式

[格式]   ASCII码    ESC ! n

十六进制码   1B 21 n

十进制码       27 33 n

[范围]   0 ≤ n ≤ 255

[描述] 通过指定参数n 的值选择打印模式。参数n 的定义如下:

位     值     意义

0     0     西文字符 (半宽)字体A (6 ×12),汉字字符 (全宽)字体A (12×12)

1     西文字符 (半宽)字体B (8×16),汉字字符 (全宽)字体B (16×16)

1     -     未定义

2     -     未定义

3     0     取消粗体模式

1     设置粗体模式

4     0     取消倍高模式

1     设置倍高模式

5     0     取消倍宽模式

1     设置倍宽模式

6     -     未定义

7     0     取消下划线模式

1     设置下划线模式

[注意] * 当同时选择倍高及倍宽模式时,则打印出四倍大小字符。

* 打印机可以为所有字符加下划线,但不能为由HT命令产生的空白或顺时针旋转90°的字符加下划

线。

* 当一行中有一些倍高或更高字符时,行中所有字符都沿基线对齐。

* ESC M也可设定字体。最后接收到的命令的设定有效。

* ESC E也可设定或取消粗体模式。最后接收到的命令的设定有效。

* ESC –也可设定或取消下划线模式,最后接收到的命令的设定有效。

* GS !也可设定字符大小。最后接收到的命令的设定有效。

* 本命令对英数字符和汉字都有效。

[缺省值] n = 0

[参照] ESC -, ESC E, GS !, ESC M

[例子] char SendStr[4];

SendStr[0] = 0x1B;

SendStr[1] = ’!’;

SendStr[2] = 0x28;// 00101000 倍宽粗体

PrtSendData( SendStr, 3);

18/53
----------------------- 20-----------------------

用户文档      JPM112 打印机开发手册(V1.0 )

4.2.2 GS ! n

[名称]   放大字符

[格式]    ASCII码     GS ! n

十六进制码        1D 21 n

十进制码         29 33 n

[范围]    0 ≤ n ≤ 255 (1 ≤垂直倍数≤ 2, 1 ≤ 水平倍数≤ 2)

[描述]   用位0~3位选择字符高度,用位4~7位选择字符宽度,如下所示:

0 1 2   3 高度            4 5   6 7 宽度

0 0 0   0 1倍            0 0   0 0 1倍

1 0 0   0 2倍            1 0   0 0 2倍

[注意]   * 该命令对所有字符(英数字符和汉字) 有效。

* 如果n 在定义范围之外,忽略该命令。

* 垂直方向是指进纸方向,水平方向与进纸方向垂直。然而,当字符方向顺时针旋转90°后,垂直

方向与水平方向之间的关系颠倒,也就是说本命令优先级低于于ESC V,当两个命令同时有效时,

字符显示是先旋转,再放大。

* 当字符以不同的尺寸在一行中放大时,一行中所有的字符沿基线对齐。

* 用ESC ! 命令也可以设置字符大小。以最后接收到的命令设置当前模式。

[缺省值] n = 0

[参考]   ESC !

[例子]   char SendStr[4];

SendStr[0] = 0x1D;

SendStr[1] = ’!’;

SendStr[2] = 0x01;// 00000001 倍高

PrtSendData( SendStr, 3);

4.2.3 ESC M n

[名称]   选择字符字体

[格式]    ASCII码     ESC M n

十六进制码        1B 4D n

十进制码         27 77 n

[范围]   n = 0, 1, 16, 17,18,19

[描述]   选择字符字体。

N(十进制)      意义

0           西文字符 (半宽)字体(6×12)

1           西文字符 (半宽)字体(8×16)

16          简体汉字字符字体12×12

19/53
----------------------- 21-----------------------

用户文档       JPM112 打印机开发手册(V1.0 )

17           简体汉字字符字体16×16

18           BIG5汉字字符字体12×12

19           BIG5汉字字符字体16×16

[注意]    * ESC !也可设定字体。最后接收到的命令的设定有效。

* 当使用该命令设定字体时。可以分别设定西文字体和汉字字体,而且互不影响。

[参考]    ESC !

[例子]    char SendStr[8];

SendStr[0]=0x1B;

SendStr[1]=’M’;

SendStr[2]=0;// 西文6×12

SendStr[0]=0x1B;

SendStr[1]=’M’;

SendStr[2]=0x11;// 简体中文16×16

PrtSendData( SendStr, 6);//以后打印的中文字体为16×16,西文为6×12

4.2.4 ESC – n

[名称]    设置/取消下划线

[格式]    ASCII码     ESC – n

十六进制码       1B 2D n

十进制码        27 45 n

[范围]    0 ≤ n ≤ 2

[描述]   基于以下的n值,设定 /解除下划线模式:

n(十进制)       意义

0            解除下划线模式

1            设定下划线模式(1 点粗)

2            设定下划线模式(2 点粗)

[注意] * 打印机不能给旋转字符以及反白字符打印下划线。

* 改变字符大小不影响当前下划线的粗细。

* 使用ESC !也可以设定或解除下划线模式。最后接收的命令设定有效。

* 该命令对英文和汉字字符都有效。

[缺省值] n = 0

[参照]    ESC !

[例子]    char SendStr[3];

SendStr[0] = 0x1B;

SendStr[1] = ’-’;

SendStr[2] = 1;//单行下划线

PrtSendData( SendStr, 3);

20/53
----------------------- 22-----------------------

用户文档      JPM112 打印机开发手册(V1.0 )

4.2.5 ESC E n

[名称]   设定/解除粗体打印

[格式]    ASCII码     ESC E n

十六进制码       1B 45 n

十进制码        27 69 n

[范围]    0 ≤ n ≤ 255

[描述]   设定或解除粗体打印模式。

当n 的最低位(LSB)为0时,解除粗体打印模式。

当n 的最低位(LSB)为1时,设定粗体打印模式。

[注意]   * 仅n 的最低有效位允许使用。

* 使用ESC !也可以设置或取消粗体模式。最后接收的命令设定有效。

[缺省值] n = 0

[参照]   ESC !, ESC G

[例子]   char SendStr[3];

SendStr[0] = 0x1B;

SendStr[1] = ’E’;

SendStr[2] = 1;//粗体

PrtSendData(SendStr,3);

4.2.6 ESC G n

[名称]   设定/解除重叠打印

[格式]    ASCII码     ESC G n

十六进制码       1B 47 n

十进制码        27 71 n

[范围]    0 ≤ n ≤ 255

[描述]   设定或解除重叠打印模式。

当n 的最低有效位(LSB)为0时,解除重叠打印模式。

当n 的最低有效位(LSB)为1时,设定重叠打印模式。

[注意]   * 仅n 的最低有效位允许使用。

* 在重叠模式和粗体模式中打印机输出是相同的。

[缺省值] n = 0

[参照]   ESC E, ESC !

[例子]   char SendStr[3];

SendStr[0] = 0x1B;

SendStr[1] = ’G’;

SendStr[2] = 1;//重叠

PrtSendData( SendStr, 3);

21/53
----------------------- 23-----------------------

用户文档   JPM112 打印机开发手册(V1.0 )

4.2.7 GS B n

[名称]   设定/解除反白打印模式

[格式]   ASCII码    GS B n

十六进制码      1D 42 n

十进制码       29 66 n

[范围]   0 ≤ n ≤ 255

[描述]   设定或解除反白打印模式。

当n 的最低有效位为0时,关闭反白模式。

当n 的最低有效位为1时,打开反白模式。

[注意]   * 仅n 的最低位有效。

* 该命令对内置字符和用户自定义字符均有效。

* 反白模式打开时,它对ESC SP设定的空白也有效。

* 该命令不影响位图,用户自定义位图,条形码,条码显示字符和由HT, ESC $, 及ESC \ 跳过的

间距。

* 反白模式优先于下划线模式。选择反白模式时,即使下划线模式打开也被禁止(但不取消)。

[缺省值] n = 0

[例子]   char SendStr[3];

SendStr[0] = 0x1D;

SendStr[1] = ’B’;

SendStr[2] = 1;//反白

PrtSendData( SendStr, 3);

4.2.8 ESC V n OK

[名称]   设置/解除字符旋转模式

[格式]   ASCII码    ESC V n

十六进制码     1B 56 n

十进制码      27 86 n

[范围]   0 ≤ n ≤ 3

[描述]   设置/解除字符旋转模式

N (十进制) 意义

0         解除旋转模式

1         设置90°顺时针旋转模式

2         设置180°顺时针旋转模式

3         设置270°顺时针旋转模式

[注意]   * 当设置了下划线模式时,对于顺时针90°旋转的字符,打印机不加下划线。

* 在 旋转模式下,倍宽和倍高命令放大字符的方向与一般模式下倍高倍宽命令放大字符的方向相

反。

[缺省值] n = 0

22/53
----------------------- 24-----------------------

用户文档      JPM112 打印机开发手册(V1.0 )

[参照]   ESC !, ESC –

[例子]   char SendStr[3];

SendStr[0] = 0x1B;

SendStr[1] = ’V’;

SendStr[2] = 2;//旋转180度

PrtSendData( SendStr, 3);

4.3 打印排版参数设置命令

4.3.1 ESC $ nL nH

[名称]   设置绝对打印位置

[格式]    ASCII码     ESC $ nL nH

十六进制码        1B 24 nL nH

十进制码         27 36 nL nH

[范围]    0 ≤ nL ≤ 255

0 ≤ nH ≤ 255
[描述]   设定从一行的开始到将要打印字符的位置之间的距离。

从一行的开始到打印位置的距离为N个水平点距。

nL nH是双字节无符号整数N的低位和高位,N=nL + nH × 256

[注意]   * 如果设定的打印位置超出了可打印区域(N>244),则被设置为可打印区域的最大值 (N=244)。

[参照]   ESC \

[例子]   char SendStr[4];

SendStr[0] = 0x1B;
SendStr[1] = ’$’;

SendStr[2] = 15;//0.2×15=3

PrtSendData( SendStr, 3);      //绝对位置设为距左边界3毫米(15水平点距)
PrtSendData( “从左侧3毫米处开始打印\n”, 22);
4.3.2 ESC D n1 n2…nk NULL

[名称]   设置水平制表位

[格式]    ASCII码     ESC D n1…nk NULL

十六进制码       1B 44 n1…nk 00

十进制码        27 68 n1…nk 0

[范围]    1 ≤ n ≤ 255 0 ≤ k ≤ 8

[描述]   设置水平定位位置。

n 指定从一行开始的列号,用来设置水平定位位置。

k 表示将被设置水平定位点的总数。

[注意]   * 水平制表位置作为一个值储存,这个值为n个西文字符宽度,是从行的开始测量的。字符宽度包

Tagged as: , , No Comments
9Jun/10

POS58 票据热敏打印机,怎么用ESC/POS命令控制打印文字大小?

Posted by Nick Xu

使用的是POS58票据热敏打印机,怎么控制文字大小?
我知道ESC/POS指令,可不会用。
ASCII :ESC ! n
十 进制 :27 33 n
十六进制:1B 21 n

在C#里用十进制,是不是(char)(27)+(char)(33)+ (char)(n)就可以把文字放大一倍打印了?
主要是想放大文字打印。n不知道取多少? 是48吗?

比如要将"中国"这个字符串放大一倍打印,具体怎么写的?

____________________________________________________

经过多次尝试,终于搞懂了.

先用字符的形式发送命令:

send = "" + (char)(27) + (char)(64) + (char)(27) + (char)(33) + (char)(48);

for (int i = 0; i < send.Length; i++)
{
buf[i] = (byte)send[i];
}

fs.Write(buf, 0, buf.Length);

解释:  (char)(27) + (char)(64)是将打印机初始化, (char)(27) + (char)(33) + (char)(48); 是设置打印字符格式命令,最后的48可以为0,16,32,48

接着直接打印输出:

printLPT.PrintData("中国" );

欢迎有同类问题的朋友指教!

*************************************************************************************

更正:其实可以把控制命令字符和输出字符写在一起.不管用什么方式,如果是多条数据就要在一个输出程序里同时输出,而不要写成函数的形式来调用,那 样是不会成功的.这是我经过一天一夜研究出来的结果,网上也能找到ESC/POS打印指令使用的程序,人家就是写在一起的,但没有控制字符大小的例子.我 自作聪明的把它改成一个函数,费了一天一夜的功夫才发现走了弯路.不过也值得,终于弄懂了ESC/POS指令怎么用了.

Tagged as: , , No Comments
25May/10

ESC/POS命令集(转摘)

Posted by Nick Xu

切纸指令:

发送:十六进制:1B69

4.1 基本控制指令

4.1.1 ESC @

[名称]   初始化打印机

[格式]    ASCII码   ESC @

十六进制码     1B 40

十进制码      27 64

[描述]   清除打印缓冲区中的数据,复位打印机打印参数到当打印机缺省参数。

[注意]   * 不是完全恢复到出厂设置,用户参数设置(见三、JPM112打印机工具软件)不会被更改。

[例子]   char SendStr[3];

SendStr[0] = 0x1B

SendStr[1] = 0x40;

PrtSendData(SendStr, 2);

4.1.2 FF

[名称]   打印并走纸到下页首

[格式]    ASCII码   FF

14/53
----------------------- 16-----------------------

用户文档 JPM112 打印机开发手册(V1.0 )

十六进制码       0C

十进制码       12

[描述]   将打印缓冲区中的数据全部打印出来并返回标准模式。

[注意]   * 打印后,删除打印缓冲区中的数据。

* 该命令设置打印位置为行的起始点。

* 如果打印纸有预印刷黑标,则打印缓冲区中的数据后,走纸到黑标处,如果打印纸无黑标,则

走纸0.5m后停止,预印刷黑标的规范请见附录B.预印刷黑标说明。

[例子]   char SendStr[2];

SendStr[0] = 0x0C;

PrtSendData( SendStr, 1);

4.1.3 LF

[名称]   打印并换行

[格式]   ASCII码     LF

十六进制码       0A

十进制码       10

[描述]   把打印缓冲区中的数据打印出来,并换行。

[注意]   * 该命令把打印位置设置为行的开始位置。

[参考]   CR

[例子]   char SendStr[2];

SendStr[0]=’n’; //C语言中’n’即为换行

PrtSendData( SendStr, 1);

4.1.4 CR

[名称]   打印并回车

[格式]    ASCII码    CR

十六进制码       0D

十进制码       13

[描述]   打印但不进纸。

[注意]   * 打印结束后,将下一行的开始设定为打印起始位置。

[参考]   LF

[例子]   char SendStr[2];

SendStr[0]=’r’; //C语言中’r’即为回车

PrtSendData(SendStr,1);

15/53
----------------------- 17-----------------------

用户文档      JPM112 打印机开发手册(V1.0 )

4.1.5 ESC J n

[名称]   打印并进纸

[格式]    ASCII码     ESC J n

十六进制码       1B 4A n

十进制码        27 74 n

[范围]    0 ≤ n ≤ 255

[描述]   打印输出打印缓冲区中的数据,并进纸n个 垂直点距。

[注意]   * 打印结束后,将下一行的开始设定为打印起始位置。

* 一个垂直点距为0.33mm,以下同。

[参考]   ESC d

[例子]   char SendStr[4];

SendStr[0] = 0x1B;

SendStr[1] = ’J’;

SendStr[2] = 3;

PrtSendData( SendStr, 3);//走纸1mm

4.1.6 ESC d n

[名称]   打印并进纸n 行

[格式]    ASCII码     ESC d   n

十六进制码   1B 64 n

十进制码        27 100 n

[范围]    0 ≤ n ≤ 255

[描述]   打印打印缓冲区中的数据并进纸n字符行。

[注意]   * 该命令设置打印起始位置为行起点。

[参考]   ESC J

[例子]   char SendStr[4];

SendStr[0] = 0x1B;

SendStr[1] = ’d’;

SendStr[2] = 2;

PrtSendData( SendStr, 3);//走纸2行

4.1.7 HT

[名称]   移动打印位置到下一个水平制表位置

[格式]   ASCII码      HT

十六进制码       09

十进制码        9

[描述]   移动打印位置到下一个水平制表位置。

16/53
----------------------- 18-----------------------

用户文档       JPM112 打印机开发手册(V1.0 )

[注意]   * 通过ESC D命令设置水平制表位的位置。

* 如果没有设置下一个水平制表位置,则该命令被忽略。

* 水平定位位置的缺省设定为字符A(6×12)的8个字符宽度(第9,17,25, … 列)。

[参照]   ESC D

[例子]   char NextPos = 9;

PrtSendData(“商品名”,6);

PrtSendData(&NextPos,1);

PrtSendData(“单价”,4);

PrtSendData(&NextPos,1);

PrtSendData(“数量”,4);

PrtSendData(&NextPos,1);

PrtSendData(“金额”,4);

4.1.8 FS U nL nH

[名称]   按Unicode编码向打印发送数据

[格式]   ASCII码       FS U nL nH

十六进制码        1C 55 nL nH

十进制码         28 85 nL nH

[描述]   打印n(n=nL+nH*256)个Unicode编码字符。

[注意]   * 因Unicode是双字节编码,此命令后的2*n(n=nL+nH*256)个字节被当作Unicode编码字符处理;

* 该指令中输入的汉字只支持GBK字库中包含的汉字,没有包含Unicode中所包含的所有汉字;

* 有关GBK的详细信息请参阅全国信息技术标准化技术委员会制定的 “汉字内码扩展规范”;

* 有关Unicode的详细信息可以参见Unicode的官方网站http://www.unicode.org

* 本命令不受汉字命令的影响,也不受自定义字符命令的影响;

* 本命令可以嵌入其他ESC/GS/FS指令,但要采用Unicode编码。

[例子]   char SendStr[64];

SendStr[0]=0x1C; SendStr[1]=’U’; SendStr[2]=11; SendStr[3]=0;

SendStr[4]=0x55; SendStr[5]=0x00; //U+0055:’U’

SendStr[6]=0x4E; SendStr[7]=0x00; //U+004E:’N’

SendStr[8]=0x49; SendStr[9]=0x00; //U+0049:’I’

SendStr[10]=0x43; SendStr[11]=0x00; //U+0043:’C’

SendStr[12]=0x4F; SendStr[13]=0x00; //U+004F:’O’

SendStr[14]=0x44; SendStr[15]=0x00; //U+0044:’D’

SendStr[16]=0x45; SendStr[17]=0x00; //U+0045:’E’

SendStr[18]=0x53; SendStr[19]=0x62; //U+6253:’打’

SendStr[20]=0x70; SendStr[21]=0x53; //U+5370:’印’

SendStr[22]=0x4B; SendStr[23]=0x6D; //U+6D4B:’测’

SendStr[24]=0xD5; SendStr[25]=0x8B; //U+8BD5:’试’

PrtSendData(SendStr,26);

PrtSendData(“n”,1);

17/53
----------------------- 19-----------------------

用户文档 JPM112 打印机开发手册(V1.0 )

4.2 字符参数设置命令

4.2.1 ESC ! n

[命令] 选择打印模式

[格式]   ASCII码    ESC ! n

十六进制码   1B 21 n

十进制码       27 33 n

[范围]   0 ≤ n ≤ 255

[描述] 通过指定参数n 的值选择打印模式。参数n 的定义如下:

位     值     意义

0     0     西文字符 (半宽)字体A (6 ×12),汉字字符 (全宽)字体A (12×12)

1     西文字符 (半宽)字体B (8×16),汉字字符 (全宽)字体B (16×16)

1     -     未定义

2     -     未定义

3     0     取消粗体模式

1     设置粗体模式

4     0     取消倍高模式

1     设置倍高模式

5     0     取消倍宽模式

1     设置倍宽模式

6     -     未定义

7     0     取消下划线模式

1     设置下划线模式

[注意] * 当同时选择倍高及倍宽模式时,则打印出四倍大小字符。

* 打印机可以为所有字符加下划线,但不能为由HT命令产生的空白或顺时针旋转90°的字符加下划

线。

* 当一行中有一些倍高或更高字符时,行中所有字符都沿基线对齐。

* ESC M也可设定字体。最后接收到的命令的设定有效。

* ESC E也可设定或取消粗体模式。最后接收到的命令的设定有效。

* ESC –也可设定或取消下划线模式,最后接收到的命令的设定有效。

* GS !也可设定字符大小。最后接收到的命令的设定有效。

* 本命令对英数字符和汉字都有效。

[缺省值] n = 0

[参照] ESC -, ESC E, GS !, ESC M

[例子] char SendStr[4];

SendStr[0] = 0x1B;

SendStr[1] = ’!’;

SendStr[2] = 0x28;// 00101000 倍宽粗体

PrtSendData( SendStr, 3);

18/53
----------------------- 20-----------------------

用户文档      JPM112 打印机开发手册(V1.0 )

4.2.2 GS ! n

[名称]   放大字符

[格式]    ASCII码     GS ! n

十六进制码        1D 21 n

十进制码         29 33 n

[范围]    0 ≤ n ≤ 255 (1 ≤垂直倍数≤ 2, 1 ≤ 水平倍数≤ 2)

[描述]   用位0~3位选择字符高度,用位4~7位选择字符宽度,如下所示:

0 1 2   3 高度            4 5   6 7 宽度

0 0 0   0 1倍            0 0   0 0 1倍

1 0 0   0 2倍            1 0   0 0 2倍

[注意]   * 该命令对所有字符(英数字符和汉字) 有效。

* 如果n 在定义范围之外,忽略该命令。

* 垂直方向是指进纸方向,水平方向与进纸方向垂直。然而,当字符方向顺时针旋转90°后,垂直

方向与水平方向之间的关系颠倒,也就是说本命令优先级低于于ESC V,当两个命令同时有效时,

字符显示是先旋转,再放大。

* 当字符以不同的尺寸在一行中放大时,一行中所有的字符沿基线对齐。

* 用ESC ! 命令也可以设置字符大小。以最后接收到的命令设置当前模式。

[缺省值] n = 0

[参考]   ESC !

[例子]   char SendStr[4];

SendStr[0] = 0x1D;

SendStr[1] = ’!’;

SendStr[2] = 0x01;// 00000001 倍高

PrtSendData( SendStr, 3);

4.2.3 ESC M n

[名称]   选择字符字体

[格式]    ASCII码     ESC M n

十六进制码        1B 4D n

十进制码         27 77 n

[范围]   n = 0, 1, 16, 17,18,19

[描述]   选择字符字体。

N(十进制)      意义

0           西文字符 (半宽)字体(6×12)

1           西文字符 (半宽)字体(8×16)

16          简体汉字字符字体12×12

19/53
----------------------- 21-----------------------

用户文档       JPM112 打印机开发手册(V1.0 )

17           简体汉字字符字体16×16

18           BIG5汉字字符字体12×12

19           BIG5汉字字符字体16×16

[注意]    * ESC !也可设定字体。最后接收到的命令的设定有效。

* 当使用该命令设定字体时。可以分别设定西文字体和汉字字体,而且互不影响。

[参考]    ESC !

[例子]    char SendStr[8];

SendStr[0]=0x1B;

SendStr[1]=’M’;

SendStr[2]=0;// 西文6×12

SendStr[0]=0x1B;

SendStr[1]=’M’;

SendStr[2]=0x11;// 简体中文16×16

PrtSendData( SendStr, 6);//以后打印的中文字体为16×16,西文为6×12

4.2.4 ESC – n

[名称]    设置/取消下划线

[格式]    ASCII码     ESC – n

十六进制码       1B 2D n

十进制码        27 45 n

[范围]    0 ≤ n ≤ 2

[描述]   基于以下的n值,设定 /解除下划线模式:

n(十进制)       意义

0            解除下划线模式

1            设定下划线模式(1 点粗)

2            设定下划线模式(2 点粗)

[注意] * 打印机不能给旋转字符以及反白字符打印下划线。

* 改变字符大小不影响当前下划线的粗细。

* 使用ESC !也可以设定或解除下划线模式。最后接收的命令设定有效。

* 该命令对英文和汉字字符都有效。

[缺省值] n = 0

[参照]    ESC !

[例子]    char SendStr[3];

SendStr[0] = 0x1B;

SendStr[1] = ’-’;

SendStr[2] = 1;//单行下划线

PrtSendData( SendStr, 3);

20/53
----------------------- 22-----------------------

用户文档      JPM112 打印机开发手册(V1.0 )

4.2.5 ESC E n

[名称]   设定/解除粗体打印

[格式]    ASCII码     ESC E n

十六进制码       1B 45 n

十进制码        27 69 n

[范围]    0 ≤ n ≤ 255

[描述]   设定或解除粗体打印模式。

当n 的最低位(LSB)为0时,解除粗体打印模式。

当n 的最低位(LSB)为1时,设定粗体打印模式。

[注意]   * 仅n 的最低有效位允许使用。

* 使用ESC !也可以设置或取消粗体模式。最后接收的命令设定有效。

[缺省值] n = 0

[参照]   ESC !, ESC G

[例子]   char SendStr[3];

SendStr[0] = 0x1B;

SendStr[1] = ’E’;

SendStr[2] = 1;//粗体

PrtSendData(SendStr,3);

4.2.6 ESC G n

[名称]   设定/解除重叠打印

[格式]    ASCII码     ESC G n

十六进制码       1B 47 n

十进制码        27 71 n

[范围]    0 ≤ n ≤ 255

[描述]   设定或解除重叠打印模式。

当n 的最低有效位(LSB)为0时,解除重叠打印模式。

当n 的最低有效位(LSB)为1时,设定重叠打印模式。

[注意]   * 仅n 的最低有效位允许使用。

* 在重叠模式和粗体模式中打印机输出是相同的。

[缺省值] n = 0

[参照]   ESC E, ESC !

[例子]   char SendStr[3];

SendStr[0] = 0x1B;

SendStr[1] = ’G’;

SendStr[2] = 1;//重叠

PrtSendData( SendStr, 3);

21/53
----------------------- 23-----------------------

用户文档   JPM112 打印机开发手册(V1.0 )

4.2.7 GS B n

[名称]   设定/解除反白打印模式

[格式]   ASCII码    GS B n

十六进制码      1D 42 n

十进制码       29 66 n

[范围]   0 ≤ n ≤ 255

[描述]   设定或解除反白打印模式。

当n 的最低有效位为0时,关闭反白模式。

当n 的最低有效位为1时,打开反白模式。

[注意]   * 仅n 的最低位有效。

* 该命令对内置字符和用户自定义字符均有效。

* 反白模式打开时,它对ESC SP设定的空白也有效。

* 该命令不影响位图,用户自定义位图,条形码,条码显示字符和由HT, ESC $, 及ESC 跳过的

间距。

* 反白模式优先于下划线模式。选择反白模式时,即使下划线模式打开也被禁止(但不取消)。

[缺省值] n = 0

[例子]   char SendStr[3];

SendStr[0] = 0x1D;

SendStr[1] = ’B’;

SendStr[2] = 1;//反白

PrtSendData( SendStr, 3);

4.2.8 ESC V n OK

[名称]   设置/解除字符旋转模式

[格式]   ASCII码    ESC V n

十六进制码     1B 56 n

十进制码      27 86 n

[范围]   0 ≤ n ≤ 3

[描述]   设置/解除字符旋转模式

N (十进制) 意义

0         解除旋转模式

1         设置90°顺时针旋转模式

2         设置180°顺时针旋转模式

3         设置270°顺时针旋转模式

[注意]   * 当设置了下划线模式时,对于顺时针90°旋转的字符,打印机不加下划线。

* 在 旋转模式下,倍宽和倍高命令放大字符的方向与一般模式下倍高倍宽命令放大字符的方向相

反。

[缺省值] n = 0

22/53
----------------------- 24-----------------------

用户文档      JPM112 打印机开发手册(V1.0 )

[参照]   ESC !, ESC –

[例子]   char SendStr[3];

SendStr[0] = 0x1B;

SendStr[1] = ’V’;

SendStr[2] = 2;//旋转180度

PrtSendData( SendStr, 3);

4.3 打印排版参数设置命令

4.3.1 ESC $ nL nH

[名称]   设置绝对打印位置

[格式]    ASCII码     ESC $ nL nH

十六进制码        1B 24 nL nH

十进制码         27 36 nL nH

[范围]    0 ≤ nL ≤ 255

0 ≤ nH ≤ 255
[描述]   设定从一行的开始到将要打印字符的位置之间的距离。

从一行的开始到打印位置的距离为N个水平点距。

nL nH是双字节无符号整数N的低位和高位,N=nL + nH × 256

[注意]   * 如果设定的打印位置超出了可打印区域(N>244),则被设置为可打印区域的最大值 (N=244)。

[参照]   ESC

[例子]   char SendStr[4];

SendStr[0] = 0x1B;
SendStr[1] = ’$’;

SendStr[2] = 15;//0.2×15=3

PrtSendData( SendStr, 3);      //绝对位置设为距左边界3毫米(15水平点距)
PrtSendData( “从左侧3毫米处开始打印n”, 22);
4.3.2 ESC D n1 n2…nk NULL

[名称]   设置水平制表位

[格式]    ASCII码     ESC D n1…nk NULL

十六进制码       1B 44 n1…nk 00

十进制码        27 68 n1…nk 0

[范围]    1 ≤ n ≤ 255 0 ≤ k ≤ 8

[描述]   设置水平定位位置。

n 指定从一行开始的列号,用来设置水平定位位置。

k 表示将被设置水平定位点的总数。

[注意]   * 水平制表位置作为一个值储存,这个值为n个西文字符宽度,是从行的开始测量的。字符宽度包

Tagged as: , , No Comments
   
site
site