最近公司做一个资产采集的项目,之前做过此类项目,不过没有整理资料,借这次机会写一下,做个记录。

本教程使用的打印机型号:TSC TTP-244 Plus     官方文档

一、TSC打印机安装

机器安装

根据官方快速安装指南安装打印机,此处不详细说明,也可以看视频教程,唯一需要注意的地方就是***碳带的方向不要装错***

产品说明书

**打印机初始化、感测器校正方法 **

a) 两个手指同时按住PAUSE、FEED键,不要松手,同时开机。

b) 待三个灯轮流闪时,只松开FEED键。待走纸,可松开PAUSE键。正常出纸是出大概2-3张标签纸。

c) 按下FEED键,正常出纸为一张标签纸高度。并停在正常撕纸位置。

安装驱动

驱动下载

安装完驱动后,在页面设置修改下纸张大小,打印测试页。


二、程序调用

准备

相关文件:TSPL2指令集(中文版) dll

注册dll:新建bat文件,复制对应系统版本的命令,把下载的dll和bat命令文件放到同一目录,执行bat命令。

  • 32位系统

    set source=. set target=%windir%\system32 echo 'Copy Files...' copy %source%\TSCActiveX.dll %target% copy %source%\TSCLIB.dll %target% echo 'Regist Service' regsvr32 %target%\TSCActiveX.dll

  • 64位系统

    set source=. set target=%windir%\sysWOW64 echo 'Copy Files...' copy %source%\TSCActiveX.dll %target% copy %source%\TSCLIB.dll %target% echo 'Regist Service' regsvr32 %target%\TSCActiveX.dll

JavaScript方式调用

<script type='text/javascript' language='javascript'>
	var d = new Date();
	var time = d.toLocaleString();
	var TSCObj;
	TSCObj = new ActiveXObject("TSCActiveX.TSCLIB");//引入插件
	//TSCObj.ActiveXabout();
	TSCObj.ActiveXopenport ("TSC TTP-244 Plus");//打开打印机端口
	TSCObj.ActiveXsetup ("99.5","70","5","8","0","2","0");//设置初始参数
	//TSCObj.ActiveXformfeed();
	//TSCObj.ActiveXnobackfeed();
	TSCObj.ActiveXsendcommand ("SET TEAR ON");
	TSCObj.ActiveXclearbuffer();
	TSCObj.ActiveXwindowsfont (260, 100, 36, 0, 0, 0, "arial", "办公耗材-标签纸");//打印文本
	TSCObj.ActiveXwindowsfont (450, 170, 32, 0, 0, 0, "arial", time);//打印时间
	//BARCODE X,Y,”code type”,height,human readable,rotation,narrow,wide,[alignment,]”content“
	TSCObj.ActiveXbarcode ("100", "300", "128", "100", "2", "0", "2", "2", "PD102011");//打印条码
	TSCObj.ActiveXprintlabel ("1","1");
	TSCObj.ActiveXcloseport();//关闭端口
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

C#调用

#region 调用TSC打印机打印条码
	/// <summary>
/// 调用TSC打印机打印条码
/// </summary>
/// <param name="title">打印的标题</param>
/// <param name="barCode">打印的条码编号</param>
public static void TSC(string title, string barCode)
{
	// 打开 打印机 端口.
	TSCLIB_DLL.openport(p_port);
	// 设置标签 宽度、高度 等信息.
	// 宽 94mm  高 25mm
	// 速度为4
	// 字体浓度为8
	// 使用垂直間距感測器(gap sensor)
	// 两个标签之间的  间距为 3.5mm
	TSCLIB_DLL.setup("94", "25", "4", "8", "0", "3.5", "0");
	// 清除缓冲信息
	TSCLIB_DLL.clearbuffer();
	// 发送 TSPL 指令.
	// 设置 打印的方向.
	TSCLIB_DLL.sendcommand("DIRECTION 1");
	// 打印文本信息.
	// 在 (176, 16) 的坐标上
	// 字体高度为34
	// 旋转的角度为 0 度
	// 2 表示 粗体.
	// 文字没有下划线.
	// 字体为 黑体.
	// 打印的内容为:title
	TSCLIB_DLL.windowsfont(176, 16, 34, 0, 2, 0, "宋体", title);
	// 打印条码.
	// 在 (176, 66) 的坐标上
	// 以 Code39 的条码方式
	// 条码高度 130
	// 打印条码的同时,还打印条码的文本信息.
	// 旋转的角度为 0 度
	// 条码 宽 窄 比例因子为 7:12
	// 条码内容为:barCode
	TSCLIB_DLL.barcode("176", "66", "39", "130", "1", "0", "7", "12", barCode);
	// 打印.
	TSCLIB_DLL.printlabel("1", "1");
	// 关闭 打印机 端口
	TSCLIB_DLL.closeport();
}
#endregion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

Java调用

解压文件,将jna.jar包添加到项目  下载地址

本示例打印的是二维码,由于官方文档中没有重写打印二维码的方法,我也懒得写了,直接使用的发送命令的方式打印。

package com.zmkj.momo.admin;

import com.sun.jna.Library;
import com.sun.jna.Native;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * TSC打印机测试
 */
public class TscPrint {
    public interface TscLibDll extends Library {
        TscLibDll INSTANCE = (TscLibDll) Native.loadLibrary("TSCLIB", TscLibDll.class);
        int about();
        int openport(String pirnterName);
        int closeport();
        int sendcommand(String printerCommand);
        int setup(String width, String height, String speed, String density, String sensor, String vertical, String offset);
        int downloadpcx(String filename, String image_name);
        int barcode(String x,String y,String type,String height,String readable,String rotation,String narrow,String wide,String code);
        int printerfont(String x, String y, String fonttype, String rotation, String xmul, String ymul, String text);
        int clearbuffer();
        int printlabel(String set, String copy);
        int formfeed();
        int nobackfeed();
        int windowsfont(int x, int y, int fontheight, int rotation, int fontstyle, int fontunderline, String szFaceName, String content);
    }


    public static void main(String[] args) {
        System.setProperty("jna.encoding", "GBK");// 支持中文
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time = df.format(new Date());
        String qrCode = "PD102011";
        //TscLibDll.INSTANCE.about();
        TscLibDll.INSTANCE.openport("TSC TTP-244 Plus");
        //TscLibDll.INSTANCE.downloadpcx("C:\\UL.PCX", "UL.PCX");
        TscLibDll.INSTANCE.setup("99.5","70","5","8","0","2","0");
        TscLibDll.INSTANCE.clearbuffer();
        //TscLibDll.INSTANCE.sendcommand("PUTPCX 550,10,\"UL.PCX\"");
        String command = "QRCODE 300,250,Q,8,A,0,M2,S7,\"" + qrCode+"\""; //打印二维码的参数和内容
        TscLibDll.INSTANCE.sendcommand(command); //传送指令
        TscLibDll.INSTANCE.windowsfont(260, 100, 36, 0, 0, 0, "arial", "办公耗材-标签纸");
        TscLibDll.INSTANCE.windowsfont(450, 150, 32, 0, 0, 0, "arial", time);
        TscLibDll.INSTANCE.printlabel("1", "1");
        TscLibDll.INSTANCE.closeport();
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

如果运行报错UnsatisfiedLinkError: Unable to load library “TSCLIB”...可以尝试把JDK换成32位版本。

注意

在调用过程中有不明白的地方看TSPL2说明书,上面有详细的指令用法以及参数说明!!!


三、参考

C#调用TSC条码打印机打印条码

C#调用TSC条码打印机打印二维码