TSC印表機使用教程終極版(轉)
阿新 • • 發佈:2018-11-12
最近公司做一個資產採集的專案,之前做過此類專案,不過沒有整理資料,借這次機會寫一下,做個記錄。
本教程使用的印表機型號:TSC TTP-244 Plus 官方文件
一、TSC印表機安裝
1.機器安裝
根據官方快速安裝指南安裝印表機,此處不詳細說明,也可以看視訊教程,唯一需要注意的地方就是碳帶的方向不要裝錯
印表機初始化、感測器校正方法
a) 兩個手指同時按住PAUSE、FEED鍵,不要鬆手,同時開機。
b) 待三個燈輪流閃時,只鬆開FEED鍵。待走紙,可鬆開PAUSE鍵。正常出紙是出大概2-3張標籤紙。
c) 按下FEED鍵,正常出紙為一張標籤紙高度。並停在正常撕紙位置。
2.安裝驅動
安裝完驅動後,在頁面設定修改下紙張大小,列印測試頁。
二、程式呼叫
1.準備
相關檔案:TSPL2指令集(中文版) dll
註冊dll:新建bat檔案,複製對應系統版本的命令,把下載的dll和bat命令檔案放到同一目錄,執行bat命令。
1 set source=. 2 set target=%windir%\system32 3 echo 'Copy Files...' 432位copy %source%\TSCActiveX.dll %target% 5 copy %source%\TSCLIB.dll %target% 6 echo 'Regist Service' 7 regsvr32 %target%\TSCActiveX.dll
1 set source=. 2 set target=%windir%\sysWOW64 3 echo 'Copy Files...' 4 copy %source%\TSCActiveX.dll %target% 5 copy %source%\TSCLIB.dll %target% 664位系統echo 'Regist Service' 7 regsvr32 %target%\TSCActiveX.dll
2.JavaScript方式呼叫
1 <script type='text/javascript' language='javascript'> 2 var d = new Date(); 3 var time = d.toLocaleString(); 4 var TSCObj; 5 TSCObj = new ActiveXObject("TSCActiveX.TSCLIB");//引入外掛 6 //TSCObj.ActiveXabout(); 7 TSCObj.ActiveXopenport ("TSC TTP-244 Plus");//開啟印表機埠 8 TSCObj.ActiveXsetup ("99.5","70","5","8","0","2","0");//設定初始引數 9 //TSCObj.ActiveXformfeed(); 10 //TSCObj.ActiveXnobackfeed(); 11 TSCObj.ActiveXsendcommand ("SET TEAR ON"); 12 TSCObj.ActiveXclearbuffer(); 13 TSCObj.ActiveXwindowsfont (260, 100, 36, 0, 0, 0, "arial", "辦公耗材-標籤紙");//列印文字 14 TSCObj.ActiveXwindowsfont (450, 170, 32, 0, 0, 0, "arial", time);//列印時間 15 //BARCODE X,Y,”code type”,height,human readable,rotation,narrow,wide,[alignment,]”content“ 16 TSCObj.ActiveXbarcode ("100", "300", "128", "100", "2", "0", "2", "2", "PD102011");//列印條碼 17 TSCObj.ActiveXprintlabel ("1","1"); 18 TSCObj.ActiveXcloseport();//關閉埠 19 </script> 20 21 Javascript程式碼JavaScript
3.C#呼叫
1 #region 呼叫TSC印表機列印條碼 2 /// <summary> 3 /// 呼叫TSC印表機列印條碼 4 /// </summary> 5 /// <param name="title">列印的標題</param> 6 /// <param name="barCode">列印的條碼編號</param> 7 public static void TSC(string title, string barCode) 8 { 9 // 開啟 印表機 埠. 10 TSCLIB_DLL.openport(p_port); 11 // 設定標籤 寬度、高度 等資訊. 12 // 寬 94mm 高 25mm 13 // 速度為4 14 // 字型濃度為8 15 // 使用垂直間距感測器(gap sensor) 16 // 兩個標籤之間的 間距為 3.5mm 17 TSCLIB_DLL.setup("94", "25", "4", "8", "0", "3.5", "0"); 18 // 清除緩衝資訊 19 TSCLIB_DLL.clearbuffer(); 20 // 傳送 TSPL 指令. 21 // 設定 列印的方向. 22 TSCLIB_DLL.sendcommand("DIRECTION 1"); 23 // 列印文字資訊. 24 // 在 (176, 16) 的座標上 25 // 字型高度為34 26 // 旋轉的角度為 0 度 27 // 2 表示 粗體. 28 // 文字沒有下劃線. 29 // 字型為 黑體. 30 // 列印的內容為:title 31 TSCLIB_DLL.windowsfont(176, 16, 34, 0, 2, 0, "宋體", title); 32 // 列印條碼. 33 // 在 (176, 66) 的座標上 34 // 以 Code39 的條碼方式 35 // 條碼高度 130 36 // 列印條碼的同時,還列印條碼的文字資訊. 37 // 旋轉的角度為 0 度 38 // 條碼 寬 窄 比例因子為 7:12 39 // 條碼內容為:barCode 40 TSCLIB_DLL.barcode("176", "66", "39", "130", "1", "0", "7", "12", barCode); 41 // 列印. 42 TSCLIB_DLL.printlabel("1", "1"); 43 // 關閉 印表機 埠 44 TSCLIB_DLL.closeport(); 45 } 46 #endregion 47 48 C#程式碼C#程式碼
4.Java呼叫
解壓檔案,將jna.jar包新增到專案 下載地址
本示例列印的是二維碼,由於官方文件中沒有重寫列印二維碼的方法,我也懶得寫了,直接使用的傳送命令的方式列印。
1 package com.zmkj.momo.admin; 2 3 import com.sun.jna.Library; 4 import com.sun.jna.Native; 5 6 import java.text.SimpleDateFormat; 7 import java.util.Date; 8 9 /** 10 * TSC印表機測試 11 */ 12 public class TscPrint { 13 public interface TscLibDll extends Library { 14 TscLibDll INSTANCE = (TscLibDll) Native.loadLibrary("TSCLIB", TscLibDll.class); 15 int about(); 16 int openport(String pirnterName); 17 int closeport(); 18 int sendcommand(String printerCommand); 19 int setup(String width, String height, String speed, String density, String sensor, String vertical, String offset); 20 int downloadpcx(String filename, String image_name); 21 int barcode(String x, String y, String type, String height, String readable, String rotation, String narrow, String wide, String code); 22 int printerfont(String x, String y, String fonttype, String rotation, String xmul, String ymul, String text); 23 int clearbuffer(); 24 int printlabel(String set, String copy); 25 int formfeed(); 26 int nobackfeed(); 27 int windowsfont(int x, int y, int fontheight, int rotation, int fontstyle, int fontunderline, String szFaceName, String content); 28 } 29 30 31 public static void main(String[] args) { 32 System.setProperty("jna.encoding", "GBK");// 支援中文 33 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 34 String time = df.format(new Date()); 35 String qrCode = "PD102011"; 36 //TscLibDll.INSTANCE.about(); 37 TscLibDll.INSTANCE.openport("TSC TTP-244 Plus"); 38 //TscLibDll.INSTANCE.downloadpcx("C:\\UL.PCX", "UL.PCX"); 39 TscLibDll.INSTANCE.setup("99.5","70","5","8","0","2","0"); 40 TscLibDll.INSTANCE.clearbuffer(); 41 //TscLibDll.INSTANCE.sendcommand("PUTPCX 550,10,\"UL.PCX\""); 42 String command = "QRCODE 300,250,Q,8,A,0,M2,S7,\"" + qrCode+"\""; //列印二維碼的引數和內容 43 TscLibDll.INSTANCE.sendcommand(command); //傳送指令 44 TscLibDll.INSTANCE.windowsfont(260, 100, 36, 0, 0, 0, "arial", "辦公耗材-標籤紙"); 45 TscLibDll.INSTANCE.windowsfont(450, 150, 32, 0, 0, 0, "arial", time); 46 TscLibDll.INSTANCE.printlabel("1", "1"); 47 TscLibDll.INSTANCE.closeport(); 48 } 49 } 50 51 Java程式碼Java程式碼
如果執行報錯UnsatisfiedLinkError: Unable to load library “TSCLIB”...可以嘗試把JDK換成32位版本。
在呼叫過程中有不明白的地方看TSPL2說明書,上面有詳細的指令用法以及引數說明!!!