我们在做一个B/S架构程序,使用TSC打印机,调用TSCLIB.DLL打印,打印时,打印队列却是在服务器的打印队列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我们在做一个B/S架构程序,使用TSC打印机,调用TSCLIB.DLL打印,打印时,打印队列却是在服务器的打印队列相关的知识,希望对你有一定的参考价值。

浏览器端连的打印机,但是打印队列却是在服务器端。

有个设置的,调用本地的打印机就可以在本地打印了,你有可能是默认连接到远程的服务器上打印了。来自:求助得到的回答 参考技术A 注意服务器端调用和本地端程序调用。
本地调用的话,一般使用JS+ActiveX,VBS+ActiveX,Java Applet等
打印队列如果在服务器端的话 估计是你写的服务器端程序的原因
参考技术B 那是,BS怎么可能调到本地的打印机。

权昌TSC条码打印机终极使用教程与开发版本代码大全

本教程使用的打印机型号: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命令。

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

2.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>

3.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

4.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();

}

}

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

#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");

#region 请求sendcommand指令,打印二维码

//功能:繪製QRCODE二維條碼

//語法:

//QRCODE X, Y, ECC Level, cell width, mode, rotation, [model, mask,]"Data string”

//參數說明

//X QRCODE條碼左上角X座標

//Y QRCODE條碼左上角Y座標

//ECC level 錯誤糾正能力等級

//L 7%

//M 15%

//Q 25%

//H 30%

//cell width 1~10

//mode 自動生成編碼/手動生成編碼

//A Auto

//M Manual

//rotation 順時針旋轉角度

//0 不旋轉

//90 順時針旋轉90度

//180 順時針旋轉180度

//270 順時針旋轉270度

//model 條碼生成樣式

//1 (預設), 原始版本

//2 擴大版本

//mask 範圍:0~8,預設7

//Data string 條碼資料內容

#endregion

string command = "QRCODE 176,8,Q,8,A,0,M2,S7,"" + barCode + """;

TSCLIB_DLL.sendcommand(command);

// 打印文本信息.

// 在 (176, 8) 的坐标上

// 字体高度为34

// 旋转的角度为 0 度

// 2 表示 粗体.

// 文字没有下划线.

// 字体为 黑体.

// 打印的内容为:title

//---------------------------------根据需要再添加

//TSCLIB_DLL.windowsfont(176, 8, 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

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

#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

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

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

 

 

 

以上是关于我们在做一个B/S架构程序,使用TSC打印机,调用TSCLIB.DLL打印,打印时,打印队列却是在服务器的打印队列的主要内容,如果未能解决你的问题,请参考以下文章

想要一个B/S架构,有开发平台的ERP,帮忙推荐下~~

关于C/S和B/S结构框架是否可以这样理解:所谓C/S即是winform程序,B/S即是ASP.NET?求高手指教?!~

开发C/S架构用各种语言的优缺点有啥?

tsc打印机模板怎么编辑环形文字

权昌TSC条码打印机终极使用教程与开发版本代码大全

TSC如何设置打印标签的距离?急???