Skip to main content

不專業。Delphi x 電子發票證明聯 x ESC/POS指令 x WP-T810出據機 x 熱感紙列印

這幾年遇到政府推動電子發票
千辛萬苦之後,總算是解決了問題

日後會找時間做個完整的紀錄,目前先分享一些指令,也會慢慢將註解補期

關於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






 


 

Comments

Post a Comment

Popular posts from this blog

我的救命靈藥。預防感冒的家庭常備藥

身為一位只要水分不足或講太多話就會喉嚨不適 甚至誘發感冒徵兆的人 身邊總是要常備一些良藥 (其實水就是最好的良藥阿) 以下就來介紹各種可舒緩喉嚨不適的產品,也順便介紹幾個其他類型我覺得也不錯的商品

ORACLE SQL自訂排序(order by decode)

SELECT ID,description FROM A ORDER BY ID 11     台中市 13     彰化縣 14     南投縣 21     台北市 22     新北市 23     基隆市 24     桃園縣 25     新竹縣 26     新竹市 27     苗栗縣 SELECT ID,description FROM A ORDER BY  decode (ID, '21',  1 , '22',  2 , '23',  3 , '24',  4 ), ID 21     台北市 22     新北市 23     基隆市 24     桃園縣 11     台中市 13     彰化縣 25     新竹縣 26     新竹市 27     苗栗縣 註解: T ranslate ID  '21' into the value 1, ID '22'  into the value 2