ESC/POS命令集(轉摘)
切紙指令:
發送:十六進位:1B69
4.1 基本控制指令
4.1.1 ESC @
[名稱] 初始化印表機
[格式] ASCII碼 ESC @
十六進位碼 1B 40
十進位碼 27 64
[描述] 清除列印緩衝區中的資料,複位印表機列印參數到當印表機預設參數。
[注意] * 不是完全恢複到出廠設定,使用者參數設定(見三、JPM112印表機工具軟體)不會被更改。
[例子] char SendStr[3];
SendStr[0] = 0x1B
SendStr[1] = 0×40;
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]=0×55; SendStr[5]=0×00; //U+0055:’U’
SendStr[6]=0x4E; SendStr[7]=0×00; //U+004E:’N’
SendStr[8]=0×49; SendStr[9]=0×00; //U+0049:’I’
SendStr[10]=0×43; SendStr[11]=0×00; //U+0043:’C’
SendStr[12]=0x4F; SendStr[13]=0×00; //U+004F:’O’
SendStr[14]=0×44; SendStr[15]=0×00; //U+0044:’D’
SendStr[16]=0×45; SendStr[17]=0×00; //U+0045:’E’
SendStr[18]=0×53; SendStr[19]=0×62; //U+6253:’打’
SendStr[20]=0×70; SendStr[21]=0×53; //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] = 0×28;// 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] = 0×01;// 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]=0×11;// 簡體中文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個西文字元寬度,是從行的開始測量的。字元寬度包