概要
打印机大概可以分为两种类型的链接的方式,来实现打印机和系统的链接。一种为USB连接方式,一种为网络连接方式。不同类型的打印机,方法可能不同,但是思路大体上是一致的。以下以TTP系列打印机作为范例。
前期准备
首先根据开发需求,去打印机的厂家官网查找相应的资料,如果找不到可以直接通过电话去联系,去找一下相关的资料,能直接找到相应的实现demo最好。
下载相关资源的链接:https://www.chinatsc.cn/zh-CN/downloads
一般大型的打印机设备厂家官网就有相应的资料。
找资料的时候注意一下,因为有的资料并不是直接就是文档,有的是夹在下载的应用中的,就比如说你找到类似的技术支援这种模块下的时候就更要注意一下,笨办法就是你可以根据自己的开发语言来找到相关的东西,然后需要下载,就下载一下看看,看看有没有夹带。
实现思路
有了资料之后,我们可以先看一下相关的文件。在Example,应该是包含了一个应用程序,两个js文件加上一个html文件,接下来我们直接打开html文件来读相应的demo代码。
代码解释
<script type="text/javascript">
//IP地址
const regexExp_IP = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/gi;
//端口
const regexExp_Port = /^[1-9][0-9]*$/gi;
//Print Server服务是webSocket服务地址
var url = "ws://127.0.0.1:8888";
//usb链接path
var usb_path;
//Dom元素
var usb_check = document.getElementById("usb_check");
var net_check = document.getElementById("net_check");
var usb_printers = document.getElementById("usb_printers");
var net_ip = document.getElementById("net_ip");
var net_port = document.getElementById("net_port");
// 页面加载执行的方法
window.onload=function(){
//加载时获取 USB 列表
var obj = {
"usb_list": []};
websocket_connection(obj);
//获取 TSC PrintServer 版本
var obj2 = {
"about": []};
websocket_connection(obj2);
}
//当前选择的USB
function usb_check_onclick() {
var usb_check = document.getElementById("usb_check");
var net_check = document.getElementById("net_check");
if(net_check.checked)
net_check.checked = false;
else
usb_check.checked = true;
}
//当前选择的网络链接
function net_check_onclick() {
var usb_check = document.getElementById("usb_check");
var net_check = document.getElementById("net_check");
if(usb_check.checked)
usb_check.checked = false;
else
net_check.checked = true;
}
function check_interface() {
if(usb_check.checked)
{
if(usb_printers.length <= 0)
return false;
else
return true;
}
else if(net_check.checked)
{
if(!regexExp_IP.test(net_ip.value))
{
regexExp_IP.lastIndex = 0;
regexExp_Port.lastIndex = 0;
alert("Invalid IP!");
return false;
}
else if(!regexExp_Port.test(net_port.value))
{
regexExp_IP.lastIndex = 0;
regexExp_Port.lastIndex = 0;
alert("Invalid Port!");
return false;
}
regexExp_IP.lastIndex = 0;
regexExp_Port.lastIndex = 0;
return true;
}
else
return false;
}
//打印的相关方法
//关于打印内容的参数,在TSC.js文件中有说明
function printTemplate_Onclick() {
const u8 = new Uint8Array(2);
u8[0] = 13;
u8[1] = 10;
if(!check_interface())
return;
var obj = {
};
init();
if(usb_check.checked)
openport_usb(usb_printers.value);
else if(net_check.checked)
openport_net(net_ip.value, net_port.value);
sendUint8Array(u8);
downloadpcx("D:\\Projects\\TSCPrintServer\\TSCPrintServer\\bin\\Debug\\Example\\assert\\file\\UL.PCX", "UL.PCX"); //打印内容中的图案
clearbuffer();
setup("100", "63", "4", "8", "0", "0", "0");
barcode("100", "150", "128", "200", "1", "0", "4", "4", "Barcode Test");
printerfont("100", "450", "3", "0", "3", "3", "Print Font Test");
windowsfont("100", "600", "100", "0", "3", "1", "Arial", "にっぽんごEnglish中文한글");
sendcommand_crlf("PUTPCX 800,150,\"UL.PCX\"");
printlabel(1,1);
closeport();
obj.functions_inorder = functions_inorder;
websocket_connection(obj);
}
function selftest_Onclick() {
if(!check_interface())
return;
var obj = {
};
init();
if(usb_check.checked)
openport_usb(usb_printers.value);
else if(net_check.checked)
openport_net(net_ip.value, net_port.value);
sendcommand_crlf("SELFTEST");
closeport();
obj.functions_inorder = functions_inorder;
websocket_connection(obj);
}
function printStatus_Onclick() {
if(!check_interface())
return;
var obj = {