這幾年遇到政府推動電子發票
千辛萬苦之後,總算是解決了問題
日後會找時間做個完整的紀錄,目前先分享一些指令,也會慢慢將註解補期
關於ESC/POS指令,我找了非常多範本,統整如下
大至分為ASCII、16進位hex 以及10進位DEC
如果遇到沒有反應的指令,我就會直接換另一種方式(例如ASCII沒反應就換成16進位hex)
交叉寫,當然是很不好的示範,總而言之 各指令範例如下
//ResetPrinter------------------------------------------------------------
ResetPrinter_ASCII = chr(27) + '@';
// 設定位置(置中、靠右、靠左)------------------------------------
AlignLeft_ASCII = chr(27) + 'a' + chr(00); // Align Text to the Left
AlignCenter_ASCII = chr(27) + 'a' + chr(01); // Align center.
AlignRight_ASCII = chr(27) + 'a' + chr(02); // Align Right
decSelectAlignLeft = AnsiChar(27) + 'a' + AnsiChar(0);
decSelectAlignCenter = AnsiChar(27) + 'a' + AnsiChar(1);
decSelectAlignRight = AnsiChar(27) + 'a' + AnsiChar(2);
hexSelectAlignLeft = AnsiChar($1B) + 'a' + AnsiChar($0);
hexSelectAlignCenter = AnsiChar($1B) + 'a' + AnsiChar($1);
hexSelectAlignRight = AnsiChar($1B) + 'a' + AnsiChar($2);
// 1D Barcode Function -------------------------------------------------
SelectBarCodewidth = Chr(29) + Chr(119) + Chr(4); //Define barcode width. 設定寬
SelectBarCodeHigh = Chr(29) + Chr(104) + Chr(162); //Define bar code height.
PrnBarCode39EndByNull = Chr(29) + chr(107) + Chr(4); //列印code39之指令前置碼
SelectBarCodewidth_ASCII = AnsiChar(29) + 'w' + AnsiChar(4);
SelectBarCodeHigh_ASCII = AnsiChar(29) + 'h' + AnsiChar(50);
PrnBarCode39EndByNull_ASCII = AnsiChar(29) + 'k' + AnsiChar(4);
decSelectBarCodeWidthDot1 = AnsiChar(29) + 'w' + AnsiChar(1);
decSelectBarCodeHighDot48 = AnsiChar(29) + 'h' + AnsiChar(50);
decPrnBarCode39EndByNull = AnsiChar(29) + 'k' + AnsiChar(4);
hexSelectBarCodeWidthDot1 = AnsiChar($1D) + 'w' + AnsiChar($1);
hexSelectBarCodeHighDot48 = AnsiChar($1D) + 'h' + AnsiChar($32);
hexPrnBarCode39EndByNull = AnsiChar($1D) + 'k' + AnsiChar($4);
hexLineH33Dots = AnsiChar($1B) + AnsiChar($32); //default=33
hexLineH40Dots = AnsiChar($1B) + AnsiChar($33) + AnsiChar($40); // 0<= n <=255 default=33
//Function:GS H n (Select position for Human Readable Interpretation (HRI) characters.)--------
SelectPrintHRI_ASCII = Chr(29)+'H'+ Chr(0);
// QR Code Function -----------------------------------------------------
decSelectQrCodeMode = AnsiChar(29) + '(k' + AnsiChar(4)+AnsiChar(0)+AnsiChar(49)+AnsiChar(65)+AnsiChar(50)+AnsiChar(0);
decSelectQrCodeVersion6 = AnsiChar(29) + '(k' + AnsiChar(3)+AnsiChar(0)+AnsiChar(49)+AnsiChar(118)+AnsiChar(6); //選擇 QR Code 版本固定於 -- 6
decSelectQrCodeSize3Dot = AnsiChar(29) + '(k' + AnsiChar(3)+AnsiChar(0)+AnsiChar(49)+AnsiChar(67)+AnsiChar(3); //選擇 QR Code 粗細 -- 3 dot
decSelectQrCodeSize4Dot = AnsiChar(29) + '(k' + AnsiChar(3)+AnsiChar(0)+AnsiChar(49)+AnsiChar(67)+AnsiChar(4); //選擇 QR Code 粗細 -- 4 dot
decSelectQrCodeErrorCorrectionLevelL = AnsiChar(29) + '(k' + AnsiChar(3)+AnsiChar(0)+AnsiChar(49)+AnsiChar(69)+AnsiChar(48); //選擇 QR Code 糾錯等級 -- L
decQrCodeDataStoreLeading = AnsiChar(29) + '(k' + AnsiChar(112) + AnsiChar(0)+AnsiChar(49)+AnsiChar(80)+AnsiChar(48);
decQrCodeDataStoreLeading_bgn = AnsiChar(29) + '(k' ;
decQrCodeDataStoreLeading_end = AnsiChar(0)+AnsiChar(49)+AnsiChar(80)+AnsiChar(48);
decQrDataPrint = AnsiChar(29) + '(k' + AnsiChar(3)+AnsiChar(0)+AnsiChar(49)+AnsiChar(81)+AnsiChar(48); //列印 QR Code Data
hexSelectQrCodeVersion6 = AnsiChar($1D) + '(k' + AnsiChar($3)+AnsiChar($0)+AnsiChar($31)+AnsiChar($76)+AnsiChar($6);
hexSelectQrCodeMode = AnsiChar($1D) + '(k' + AnsiChar($4)+AnsiChar($0)+AnsiChar($31)+AnsiChar($41)+AnsiChar($32)+AnsiChar($0);
hexSelectQrCodeSize3Dot = AnsiChar($1D) + '(k' + AnsiChar($3)+AnsiChar($0)+AnsiChar($31)+AnsiChar($43)+AnsiChar($3);
hexSelectQrCodeSize4Dot = AnsiChar($1D) + '(k' + AnsiChar($3)+AnsiChar($0)+AnsiChar($31)+AnsiChar($43)+AnsiChar($4);
hexSelectQrCodeErrorCorrectionLevelL = AnsiChar($1D) + '(k' + AnsiChar($3)+AnsiChar($0)+AnsiChar($31)+AnsiChar($45)+AnsiChar($30);
hexQrCodeDataStoreLeading = AnsiChar($1D) + '(k' + AnsiChar($70) + AnsiChar($0)+AnsiChar($31)+AnsiChar($50)+AnsiChar($30);
hexQrCodeDataStoreLeading_bgn = AnsiChar($1D) + '(k' ;
hexQrCodeDataStoreLeading_end = AnsiChar($0)+AnsiChar($31)+AnsiChar($50)+AnsiChar($30);
hexQrDataPrint = AnsiChar($1D) + '(k' + AnsiChar($3)+AnsiChar($0)+AnsiChar($31)+AnsiChar($51)+AnsiChar($30);
//Function:FS p n m----------------------------------------------------------------
//Prints a predefined bit image from none-volatile (NV) memory.-------------
PrintNvImage_ASCII = chr(28)+'p'+ chr(1) + chr(0);
// printer command define ------------------------------------------------------
decSelectPageMode = AnsiChar(27) + AnsiChar(2); //整頁模式
decPrintAndCancelPageMode = AnsiChar(27) + AnsiChar(3); //列印並取消整頁模式
decPrintNvImage = AnsiChar(28) + 'p' + AnsiChar(1) + AnsiChar(0);
// Position Control Functions ------------------------------------------------------
decSetAbsolutePrintPosition16Dots = AnsiChar(27) + '$' + AnsiChar(16) + AnsiChar(0); //靠左16點
decSetAbsolutePrintPosition40Dots =AnsiChar(27) + '$' + AnsiChar(40) + AnsiChar(0);
decSetAbsolutePrintPosition208Dots = AnsiChar(27) + '$' + AnsiChar(208) + AnsiChar($0);
hexetAbsolutePrintPosition16Dots = AnsiChar($1B) + '$' + AnsiChar($10) + AnsiChar($0);
hexSetAbsolutePrintPosition40Dots = AnsiChar($1B) + '$' + AnsiChar($28) + AnsiChar($0);
hexetAbsolutePrintPosition208Dots = AnsiChar($1B) + '$' + AnsiChar($D0) + AnsiChar($0);
// cut Control Functions ------------------------------------------------------
decPartialCut1 = AnsiChar(27) + 'm';
decFeedPartialCut1 = AnsiChar(29) + 'VB' + AnsiChar(0);
// Font Control Functions ------------------------------------------------------
decSelectGlobalFontW1H1 = AnsiChar(29) + '!' + AnsiChar(0);
decSelectGlobalFontW1H2 = AnsiChar(29) + '!' + AnsiChar(1);
decSelectGlobalFontW2H2 = AnsiChar(29) + '!' + AnsiChar(17); //文字兩倍寬兩倍高
decSelectFontBoldMode = AnsiChar(27) + 'E' + AnsiChar(1); //文字加粗
decCancelFontBoldMode = AnsiChar(27) + 'E' + AnsiChar(0); //文字取消加粗
// Paper Feed Functions ------------------------------------------------------
decPaperFeed24Dots = AnsiChar(27) + 'J' + AnsiChar(24);
decPaperFeed12Dots = AnsiChar(27) + 'J' + AnsiChar(12);
decPaperFeed10Dots = AnsiChar(27) + 'J' + AnsiChar(10);
decPaperFeed8Dots = AnsiChar(27) + 'J' + AnsiChar(8);
decPaperFeed4Dots = AnsiChar(27) + 'J' + AnsiChar(4);
decPaperFeed3Dots = AnsiChar(27) + 'J' + AnsiChar(3);
decPaperFeed1Dots = AnsiChar(27) + 'J' + AnsiChar(1);
decPaperBackFeed180Dots = AnsiChar(27) + 'K' + AnsiChar(180);
decPaperBackFeed100Dots = AnsiChar(27) + 'K' + AnsiChar(100);
decPaperBackFeed31Dots = AnsiChar(27) + 'K' + AnsiChar(31);
decPaperBackFeed72Dots = AnsiChar(27) + 'K' + AnsiChar(72);
decPaperBackFeed194Dots = AnsiChar(27) + 'K' + AnsiChar(194);
decPaperBackFeed14Dots = AnsiChar(27) + 'K' + AnsiChar(14);
decPaperBackFeed8Dots = AnsiChar(27) + 'K' + AnsiChar(8);
decPaperBackFeed50Dots = AnsiChar(27) + 'K' + AnsiChar(50);
decPaperBackFeed4Dots = AnsiChar(27) + 'K' + AnsiChar(4);
hexPaperFeed24Dots = AnsiChar($1B) + 'J' + AnsiChar($18);
hexPaperFeed12Dots = AnsiChar($1B) + 'J' + AnsiChar($0C);
hexPaperBackFeed100Dots = AnsiChar($1B) + 'K' + AnsiChar($64);
hexPaperBackFeed31Dots = AnsiChar($1B) + 'K' + AnsiChar($1F);
hexPaperBackFeed72Dots = AnsiChar($1B) + 'K' + AnsiChar($48);
hexPaperBackFeed180Dots = AnsiChar($1B) + 'K' + AnsiChar($B4);
hexPaperBackFeed14Dots = AnsiChar($1B) + 'K' + AnsiChar($0E);
hexPaperBackFeed4Dots = AnsiChar($1B) + 'K' + AnsiChar($4);
PaperFeed12Dots = Chr(27) + Chr(100) + '12' ;
PaperFeed6Dots = Chr(27) + Chr(74) + '6' ; //Prints buffered data and feeds paper
千辛萬苦之後,總算是解決了問題
日後會找時間做個完整的紀錄,目前先分享一些指令,也會慢慢將註解補期
關於ESC/POS指令,我找了非常多範本,統整如下
大至分為ASCII、16進位hex 以及10進位DEC
如果遇到沒有反應的指令,我就會直接換另一種方式(例如ASCII沒反應就換成16進位hex)
交叉寫,當然是很不好的示範,總而言之 各指令範例如下
//ResetPrinter------------------------------------------------------------
ResetPrinter_ASCII = chr(27) + '@';
// 設定位置(置中、靠右、靠左)------------------------------------
AlignLeft_ASCII = chr(27) + 'a' + chr(00); // Align Text to the Left
AlignCenter_ASCII = chr(27) + 'a' + chr(01); // Align center.
AlignRight_ASCII = chr(27) + 'a' + chr(02); // Align Right
decSelectAlignLeft = AnsiChar(27) + 'a' + AnsiChar(0);
decSelectAlignCenter = AnsiChar(27) + 'a' + AnsiChar(1);
decSelectAlignRight = AnsiChar(27) + 'a' + AnsiChar(2);
hexSelectAlignLeft = AnsiChar($1B) + 'a' + AnsiChar($0);
hexSelectAlignCenter = AnsiChar($1B) + 'a' + AnsiChar($1);
hexSelectAlignRight = AnsiChar($1B) + 'a' + AnsiChar($2);
// 1D Barcode Function -------------------------------------------------
SelectBarCodewidth = Chr(29) + Chr(119) + Chr(4); //Define barcode width. 設定寬
SelectBarCodeHigh = Chr(29) + Chr(104) + Chr(162); //Define bar code height.
PrnBarCode39EndByNull = Chr(29) + chr(107) + Chr(4); //列印code39之指令前置碼
SelectBarCodewidth_ASCII = AnsiChar(29) + 'w' + AnsiChar(4);
SelectBarCodeHigh_ASCII = AnsiChar(29) + 'h' + AnsiChar(50);
PrnBarCode39EndByNull_ASCII = AnsiChar(29) + 'k' + AnsiChar(4);
decSelectBarCodeWidthDot1 = AnsiChar(29) + 'w' + AnsiChar(1);
decSelectBarCodeHighDot48 = AnsiChar(29) + 'h' + AnsiChar(50);
decPrnBarCode39EndByNull = AnsiChar(29) + 'k' + AnsiChar(4);
hexSelectBarCodeWidthDot1 = AnsiChar($1D) + 'w' + AnsiChar($1);
hexSelectBarCodeHighDot48 = AnsiChar($1D) + 'h' + AnsiChar($32);
hexPrnBarCode39EndByNull = AnsiChar($1D) + 'k' + AnsiChar($4);
hexLineH33Dots = AnsiChar($1B) + AnsiChar($32); //default=33
hexLineH40Dots = AnsiChar($1B) + AnsiChar($33) + AnsiChar($40); // 0<= n <=255 default=33
//Function:GS H n (Select position for Human Readable Interpretation (HRI) characters.)--------
SelectPrintHRI_ASCII = Chr(29)+'H'+ Chr(0);
// QR Code Function -----------------------------------------------------
decSelectQrCodeMode = AnsiChar(29) + '(k' + AnsiChar(4)+AnsiChar(0)+AnsiChar(49)+AnsiChar(65)+AnsiChar(50)+AnsiChar(0);
decSelectQrCodeVersion6 = AnsiChar(29) + '(k' + AnsiChar(3)+AnsiChar(0)+AnsiChar(49)+AnsiChar(118)+AnsiChar(6); //選擇 QR Code 版本固定於 -- 6
decSelectQrCodeSize3Dot = AnsiChar(29) + '(k' + AnsiChar(3)+AnsiChar(0)+AnsiChar(49)+AnsiChar(67)+AnsiChar(3); //選擇 QR Code 粗細 -- 3 dot
decSelectQrCodeSize4Dot = AnsiChar(29) + '(k' + AnsiChar(3)+AnsiChar(0)+AnsiChar(49)+AnsiChar(67)+AnsiChar(4); //選擇 QR Code 粗細 -- 4 dot
decSelectQrCodeErrorCorrectionLevelL = AnsiChar(29) + '(k' + AnsiChar(3)+AnsiChar(0)+AnsiChar(49)+AnsiChar(69)+AnsiChar(48); //選擇 QR Code 糾錯等級 -- L
decQrCodeDataStoreLeading = AnsiChar(29) + '(k' + AnsiChar(112) + AnsiChar(0)+AnsiChar(49)+AnsiChar(80)+AnsiChar(48);
decQrCodeDataStoreLeading_bgn = AnsiChar(29) + '(k' ;
decQrCodeDataStoreLeading_end = AnsiChar(0)+AnsiChar(49)+AnsiChar(80)+AnsiChar(48);
decQrDataPrint = AnsiChar(29) + '(k' + AnsiChar(3)+AnsiChar(0)+AnsiChar(49)+AnsiChar(81)+AnsiChar(48); //列印 QR Code Data
hexSelectQrCodeVersion6 = AnsiChar($1D) + '(k' + AnsiChar($3)+AnsiChar($0)+AnsiChar($31)+AnsiChar($76)+AnsiChar($6);
hexSelectQrCodeMode = AnsiChar($1D) + '(k' + AnsiChar($4)+AnsiChar($0)+AnsiChar($31)+AnsiChar($41)+AnsiChar($32)+AnsiChar($0);
hexSelectQrCodeSize3Dot = AnsiChar($1D) + '(k' + AnsiChar($3)+AnsiChar($0)+AnsiChar($31)+AnsiChar($43)+AnsiChar($3);
hexSelectQrCodeSize4Dot = AnsiChar($1D) + '(k' + AnsiChar($3)+AnsiChar($0)+AnsiChar($31)+AnsiChar($43)+AnsiChar($4);
hexSelectQrCodeErrorCorrectionLevelL = AnsiChar($1D) + '(k' + AnsiChar($3)+AnsiChar($0)+AnsiChar($31)+AnsiChar($45)+AnsiChar($30);
hexQrCodeDataStoreLeading = AnsiChar($1D) + '(k' + AnsiChar($70) + AnsiChar($0)+AnsiChar($31)+AnsiChar($50)+AnsiChar($30);
hexQrCodeDataStoreLeading_bgn = AnsiChar($1D) + '(k' ;
hexQrCodeDataStoreLeading_end = AnsiChar($0)+AnsiChar($31)+AnsiChar($50)+AnsiChar($30);
hexQrDataPrint = AnsiChar($1D) + '(k' + AnsiChar($3)+AnsiChar($0)+AnsiChar($31)+AnsiChar($51)+AnsiChar($30);
//Function:FS p n m----------------------------------------------------------------
//Prints a predefined bit image from none-volatile (NV) memory.-------------
PrintNvImage_ASCII = chr(28)+'p'+ chr(1) + chr(0);
// printer command define ------------------------------------------------------
decSelectPageMode = AnsiChar(27) + AnsiChar(2); //整頁模式
decPrintAndCancelPageMode = AnsiChar(27) + AnsiChar(3); //列印並取消整頁模式
decPrintNvImage = AnsiChar(28) + 'p' + AnsiChar(1) + AnsiChar(0);
// Position Control Functions ------------------------------------------------------
decSetAbsolutePrintPosition16Dots = AnsiChar(27) + '$' + AnsiChar(16) + AnsiChar(0); //靠左16點
decSetAbsolutePrintPosition40Dots =AnsiChar(27) + '$' + AnsiChar(40) + AnsiChar(0);
decSetAbsolutePrintPosition208Dots = AnsiChar(27) + '$' + AnsiChar(208) + AnsiChar($0);
hexetAbsolutePrintPosition16Dots = AnsiChar($1B) + '$' + AnsiChar($10) + AnsiChar($0);
hexSetAbsolutePrintPosition40Dots = AnsiChar($1B) + '$' + AnsiChar($28) + AnsiChar($0);
hexetAbsolutePrintPosition208Dots = AnsiChar($1B) + '$' + AnsiChar($D0) + AnsiChar($0);
// cut Control Functions ------------------------------------------------------
decPartialCut1 = AnsiChar(27) + 'm';
decFeedPartialCut1 = AnsiChar(29) + 'VB' + AnsiChar(0);
// Font Control Functions ------------------------------------------------------
decSelectGlobalFontW1H1 = AnsiChar(29) + '!' + AnsiChar(0);
decSelectGlobalFontW1H2 = AnsiChar(29) + '!' + AnsiChar(1);
decSelectGlobalFontW2H2 = AnsiChar(29) + '!' + AnsiChar(17); //文字兩倍寬兩倍高
decSelectFontBoldMode = AnsiChar(27) + 'E' + AnsiChar(1); //文字加粗
decCancelFontBoldMode = AnsiChar(27) + 'E' + AnsiChar(0); //文字取消加粗
// Paper Feed Functions ------------------------------------------------------
decPaperFeed24Dots = AnsiChar(27) + 'J' + AnsiChar(24);
decPaperFeed12Dots = AnsiChar(27) + 'J' + AnsiChar(12);
decPaperFeed10Dots = AnsiChar(27) + 'J' + AnsiChar(10);
decPaperFeed8Dots = AnsiChar(27) + 'J' + AnsiChar(8);
decPaperFeed4Dots = AnsiChar(27) + 'J' + AnsiChar(4);
decPaperFeed3Dots = AnsiChar(27) + 'J' + AnsiChar(3);
decPaperFeed1Dots = AnsiChar(27) + 'J' + AnsiChar(1);
decPaperBackFeed180Dots = AnsiChar(27) + 'K' + AnsiChar(180);
decPaperBackFeed100Dots = AnsiChar(27) + 'K' + AnsiChar(100);
decPaperBackFeed31Dots = AnsiChar(27) + 'K' + AnsiChar(31);
decPaperBackFeed72Dots = AnsiChar(27) + 'K' + AnsiChar(72);
decPaperBackFeed194Dots = AnsiChar(27) + 'K' + AnsiChar(194);
decPaperBackFeed14Dots = AnsiChar(27) + 'K' + AnsiChar(14);
decPaperBackFeed8Dots = AnsiChar(27) + 'K' + AnsiChar(8);
decPaperBackFeed50Dots = AnsiChar(27) + 'K' + AnsiChar(50);
decPaperBackFeed4Dots = AnsiChar(27) + 'K' + AnsiChar(4);
hexPaperFeed24Dots = AnsiChar($1B) + 'J' + AnsiChar($18);
hexPaperFeed12Dots = AnsiChar($1B) + 'J' + AnsiChar($0C);
hexPaperBackFeed100Dots = AnsiChar($1B) + 'K' + AnsiChar($64);
hexPaperBackFeed31Dots = AnsiChar($1B) + 'K' + AnsiChar($1F);
hexPaperBackFeed72Dots = AnsiChar($1B) + 'K' + AnsiChar($48);
hexPaperBackFeed180Dots = AnsiChar($1B) + 'K' + AnsiChar($B4);
hexPaperBackFeed14Dots = AnsiChar($1B) + 'K' + AnsiChar($0E);
hexPaperBackFeed4Dots = AnsiChar($1B) + 'K' + AnsiChar($4);
PaperFeed12Dots = Chr(27) + Chr(100) + '12' ;
PaperFeed6Dots = Chr(27) + Chr(74) + '6' ; //Prints buffered data and feeds paper
This comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
ReplyDelete