前端TSC TTP系列标签打印机开发调用

接到一个新的零售行业web端标签打印的需求,第一次接触标签打印机,记录一下经验。 项目用的是普通的vue框架。

环境准备

我们先找到TSC的官网地址里面可以根据打印机型号下载我们需要的开发手册、简单demo、还有打印机驱动。

我们会下载到一个叫做TSC.js的文件,里面有各种打印机方法。我们将这个文件导入到项目中。

里面通过维护一个叫做functions_inorder的数组来保存将要通信到打印机的指令集合

连接打印机

TSC的打印机是通过websocket来建立打印机通信,可以通过安装驱动在本地启动打印机服务,通过usb接口连接到电脑,也可以通过打印机联网直接连接。

我们首先新建一个websocket,地址是我们打印机所在的端口

const websocket=new WebSocket('ws://地址')

在webcokect的Open事件中使用Tsc.js中提供的工具方法,先清空functions_inorder,再send获取websocket连接中的打印机列表

js 复制代码
import printUtil from '路径/TSC.js
websocket.onopen=()=>{
        printUtil.init()
        websocket.send(JSON.stringify({usb_list:[]}))
    }

连接成功的话我们会在onmessage中获得这个端口上的打印机列表, message的data结构中会获得一个叫usb_list{USBPath,USBName}的对象

最后我们使用根据打印机USBName找到的对应的usePath,在数组中输入连接的指令 ,这里我用的是本地usb连接,网络连接使用另一个openport_net方法

js 复制代码
   printUtil.openport_usb(USBPath)

如果只是想要连接的话,这里我们就可以将维护的functions_inorder数组通过websocket发送到打印机了。

js 复制代码
   websocket.send(JSON.stringify({functions_inorder}))

指令执行完成后,websocket的onmessage事件会触发,在message中返回Finish字符串,标志我们发送过去的所有指令执行完成。

打印标签

如果连接后需要继续,我们在openport_usb/openport_net后先不急着发送指令,继续维护我们的functions_inorder数组。

在TSC.js中,打印文字,打印条码都有现成的方法

直接使用方法就可以,这里就不赘述。

最后使用printUtil.printlabel(份数,张数),维护完functions_inorder数组后,通过websocket的send方法发送至打印机

打印二维码

值得一提的是在TSC.js中没有直接打印二维码的方法,如果我们需要打印二维码的话,我们需要这个sendcommand_crlf命令

这个sendcommand_crlf命令是更接近于开发手册中的命令,有更严格的要求,手册中有字符串标记的参数,我们都必须加上"符号,譬如

js 复制代码
printUtil.sendcommand_crlf(`QRCODE 10,20,H,4,A,0,\"${变量}\"`)

并且在开头,我们必须初始化标签纸张的大小,否则二维码会无法打印,出现空白的情况

js 复制代码
  printUtil.setup(大小参数)

一次性多张打印

最后我们时常会碰到一次性多张的情况,这种情况下,在每一张的相关指令,也就是循环体前,我们需要加上printUtil.clearbuffer(),否则会出现打印内容不断重叠的情况。

因此我们完整的循环体内容大致为

js 复制代码
printUtil.clearbuffer()
printUtil.setup(参数)
标签内容相关指令
printUtil.printlabel(1,1) //这里是每个内容打印一份

循环完毕后,使用wensocket的send方法websocket.send(JSON.stringify({functions_inorder}))发送至打印机,message返回finish,完成打印。

相关推荐
子兮曰4 分钟前
AI 浏览器 Agent 的安全困局:当自动化工具可以偷走你的登录态
前端·人工智能·后端
程序员黑豆10 分钟前
鸿蒙应用开发之@Styles 装饰器:定义可复用的组件样式
前端·harmonyos
程序员码歌12 分钟前
我全程用 AI开发了一款微信小游戏,上线了
android·前端·游戏开发
咩咩啃树皮13 分钟前
第52篇:前端工程化完整体系精讲——Vite构建、模块化、打包原理、规范体系、面试终极通关
前端·面试·职场和发展
妙码生花14 分钟前
从 PHP 到 AI + Golang,程序员自救转型手记(四十八):菜单规则管理实现
前端·后端·ai编程
FogLetter16 分钟前
当JavaScript学会“分身术”:异步编程的进化简史
前端·javascript·面试
hunterandroid36 分钟前
[鸿蒙从零到一] HarmonyOS 分布式能力与设备协同实战:从发现设备到任务闭环
前端
lichenyang4531 小时前
从图片创作到本地可复现的 AIGC 全栈闭环:AIGC Creative Studio 实践复盘
前端·后端
牧艺1 小时前
别急着 Vibe Coding:AI 三小时写完需求后,我为什么宁愿多花一天
前端·agent·vibecoding
java1234_小锋1 小时前
Vue3+Vite简介以及构建第一个HelloWorld实例
前端·javascript·vue.js·vite