微信小程序蓝牙打印开发心得

此项目是使用的汉印HM-A400蓝牙打印机,在此过程中整理并总结了一些经验。

此链接为汉印HM-A400蓝牙打印官方给的微信小程序demo:https://gitee.com/harlinmin/hanyin-hm-400-bluetooth-print-demo.git

经验一:

此款标签打印机支持的打印语言为cpcl、esc、tspl,此案例中我使用的是cpcl语言,要具体打印动态内容我写在一个js函数里,cpcl语法规则具体参考:https://gitee.com/harlinmin/cpcl-print.git

let printStyle = '! 0 200 200 640 1\r\n' +
		'PW 1000\r\n' +
		'SETMAG 1 1\r\n' +
		'TEXT 7 0 20 60 交易类型: ' + searchDetail.type + '\r\n' +
		'TEXT 7 0 20 90 门店名称: ' + searchDetail.store_name + '\r\n' +
		'TEXT 7 0 20 120 时间日期: ' + searchDetail.active_time + '\r\n' +
		'TEXT 7 0 20 150 交易人员: ' + searchDetail.operator_name + '\r\n\r\n' +
		'TEXT 7 0 20 180 金额总计: ' + strTotalMoney + '\r\n' +
		'TEXT 7 0 20 210 序号    ' + '产品        ' + '批次        ' + '数量    ' + '单价   ' + '\r\n' +
		productList + '\r\n' +
		
		'PRINT\r\n'

但是此项目客户有个需求就是需要在标签纸上打印出多个这样的列表内容,经过我反复尝试,无法将宽度、高度作为动态变量来计算,如果这样做,打印出来的就会是乱码,经过咨询汉印官方技术后,只能采用穷举的方式,

import checkTEXT from './checkTEXT.js'

// “门店交易” 打印的标签样式
function dealStyle(searchDetail) {
	// 扫码列表
	let productList = ''
	let totalMoney = 0
	for (let i = 0; i < searchDetail.lines.length; i++) {
		let order = dealTEXT[i].first + String(i + 1) + '\r\n'
		let product = dealTEXT[i].second + searchDetail.lines[i].product + '\r\n'
		let batch = dealTEXT[i].third + searchDetail.lines[i].batch + '\r\n'
		let qty = dealTEXT[i].fourth + String(searchDetail.lines[i].qty) + '\r\n'
		let price = dealTEXT[i].fifth + String(searchDetail.lines[i].price) + '\r\n'

		productList += order + product + batch + qty + price

		totalMoney += (Number(searchDetail.lines[i].price) * Number(searchDetail.lines[i].qty))
	}

	let strTotalMoney = String(totalMoney)

	let printStyle = '! 0 200 200 640 1\r\n' +
		'PW 1000\r\n' +
		'SETMAG 1 1\r\n' +
		'TEXT 7 0 20 60 交易类型: ' + searchDetail.type + '\r\n' +
		'TEXT 7 0 20 90 门店名称: ' + searchDetail.store_name + '\r\n' +
		'TEXT 7 0 20 120 时间日期: ' + searchDetail.active_time + '\r\n' +
		'TEXT 7 0 20 150 交易人员: ' + searchDetail.operator_name + '\r\n\r\n' +
		'TEXT 7 0 20 180 金额总计: ' + strTotalMoney + '\r\n' +
		'TEXT 7 0 20 210 序号    ' + '产品        ' + '批次        ' + '数量    ' + '单价   ' + '\r\n' +
		productList + '\r\n' +
		
		'PRINT\r\n'

	return printStyle
}

checkTEXT.js文件,

exports.dealTEXT = [{
		first: 'TEXT 7 0 20 210 ',
		second: 'TEXT 7 0 120 210 ',
		third: 'TEXT 7 0 260 210 ',
		fourth: 'TEXT 7 0 410 210 ',
		fifth: 'TEXT 7 0 500 210 '
	},
	{
		first: 'TEXT 7 0 20 240 ',
		second: 'TEXT 7 0 120 240 ',
		third: 'TEXT 7 0 260 240 ',
		fourth: 'TEXT 7 0 410 240 ',
		fifth: 'TEXT 7 0 500 240 '
	},
	{
		first: 'TEXT 7 0 20 270 ',
		second: 'TEXT 7 0 120 270 ',
		third: 'TEXT 7 0 260 270 ',
		fourth: 'TEXT 7 0 410 270 ',
		fifth: 'TEXT 7 0 500 270 '
	},
	{
		first: 'TEXT 7 0 20 300 ',
		second: 'TEXT 7 0 120 300 ',
		third: 'TEXT 7 0 260 300 ',
		fourth: 'TEXT 7 0 410 300 ',
		fifth: 'TEXT 7 0 500 300 '
	}]

经验二:

之后我们改变策列直接将要打印的内容生成图片,小程序选择其他应用打开,选择汉印App直接打印就行(如果打印没有反应,可以升级打印机固件到最新版解决)。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值