微信小程序 蓝牙打印esc编码格式

esc.js

var encode = require("./encoding.js")
var app = getApp();
var jpPrinter = {    createNew: function() {      var jpPrinter = {};var data = [];var bar = ["UPC-A", "UPC-E", "EAN13", "EAN8", "CODE39", "ITF", "CODABAR", "CODE93", "CODE128"];jpPrinter.name = "蓝牙打印机";jpPrinter.init = function() { //初始化打印机data.push(27)data.push(64)};jpPrinter.setText = function(content) { //设置文本内容var code = new encode.TextEncoder('gb18030', {NONSTANDARD_allowLegacyEncoding: true}).encode(content)for (var i = 0; i < code.length; ++i) {data.push(code[i])}}jpPrinter.setBarcodeWidth = function(width) { //设置条码宽度data.push(29)data.push(119)if (width > 6) {width = 6;}if (width < 2) {width = 1;}data.push(width)}jpPrinter.setBarcodeHeight = function(height) { //设置条码高度data.push(29)data.push(104)data.push(height)}jpPrinter.setBarcodeContent = function(t,content) {var code = new encode.TextEncoder('gb18030', {NONSTANDARD_allowLegacyEncoding: true}).encode(content)var ty = 73;data.push(29)data.push(107)switch (t) {case bar[0]:ty = 65;break;case bar[1]:ty = 66;break;case bar[2]:ty = 67;break;case bar[3]:ty = 68;break;case bar[4]:ty = 69;break;case bar[5]:ty = 70;break;case bar[6]:ty = 71;break;case bar[7]:ty = 72;break;case bar[8]:ty = 73;break;}data.push(ty)for (var i = 0; i < code.length; ++i) {data.push(code[i])}}jpPrinter.setPrintBarCode = function() { //打印条码data.push(29)data.push(107)data.push(5)data.push(11)data.push(48)// data.push(3)// data.push(0)// data.push(49)// data.push(81)// data.push(48)}jpPrinter.setSelectSizeOfModuleForQRCode = function(n) { //设置二维码大小data.push(29)data.push(40)data.push(107)data.push(3)data.push(0)data.push(49)data.push(67)if (n > 15) {n = 15}if (n < 1) {n = 1}data.push(n)}jpPrinter.setSelectErrorCorrectionLevelForQRCode = function(n) { //设置纠错等级/*n      功能      纠错能力48 选择纠错等级 L 749 选择纠错等级 M 1550 选择纠错等级 Q 2551 选择纠错等级 H 30*/data.push(29)data.push(40)data.push(107)data.push(3)data.push(0)data.push(49)data.push(69)data.push(n)}jpPrinter.setStoreQRCodeData = function(content) { //设置二维码内容var code = new encode.TextEncoder('gb18030', {NONSTANDARD_allowLegacyEncoding: true}).encode(content)data.push(29)data.push(40)data.push(107)data.push(parseInt((code.length + 3) % 256))data.push(parseInt((code.length + 3) / 256))data.push(49)data.push(80)data.push(48)for (var i = 0; i < code.length; ++i) {data.push(code[i])}}jpPrinter.setPrintQRCode = function() { //打印二维码data.push(29)data.push(40)data.push(107)data.push(3)data.push(0)data.push(49)data.push(81)data.push(48)}jpPrinter.setHorTab = function() { //移动打印位置到下一个水平定位点的位置data.push(9)}jpPrinter.setAbsolutePrintPosition = function(where) { //设置绝对打印位置data.push(27)data.push(36)data.push(parseInt(where % 256))data.push(parseInt(where / 256))}jpPrinter.setRelativePrintPositon = function(where) { //设置相对横向打印位置data.push(27)data.push(92)data.push(parseInt(where % 256))data.push(parseInt(where / 256))}jpPrinter.setSelectJustification = function(which) { //对齐方式/*0, 48 左对齐1, 49 中间对齐2, 50 右对齐*/data.push(27)data.push(97)data.push(which)}jpPrinter.setLeftMargin = function(n) { //设置左边距data.push(29)data.push(76)data.push(parseInt(n % 256))data.push(parseInt(n / 256))}jpPrinter.setPrintingAreaWidth = function(width) { //设置打印区域宽度data.push(29)data.push(87)data.push(parseInt(width % 256))data.push(parseInt(width / 256))}jpPrinter.setSound = function(n, t) { //设置蜂鸣器data.push(27)data.push(66)if (n < 0) {n = 1;} else if (n > 9) {n = 9;}if (t < 0) {t = 1;} else if (t > 9) {t = 9;}data.push(n)data.push(t)}jpPrinter.setBitmap = function(res) { //参数,画布的参数console.log(res)var width = parseInt((res.width + 7) / 8 * 8 / 8)var height = res.height;var time = 1;var temp = res.data.length - width * 32;var point_list = []console.log(width + "--" + height)data.push(29)data.push(118)data.push(48)data.push(0)data.push((parseInt((res.width + 7) / 8) * 8) / 8)data.push(0)data.push(parseInt(res.height % 256))data.push(parseInt(res.height / 256))console.log(res.data.length)console.log("temp=" + temp)for (var i = 0; i < height; ++i) {for (var j = 0; j < width; ++j) {for (var k = 0; k < 32; k += 4) {var po = {}if (res.data[temp] == 0 && res.data[temp + 1] == 0 && res.data[temp + 2] == 0 && res.data[temp + 3] == 0) {po.point = 0;} else {po.point = 1;}point_list.push(po)temp += 4}}time++temp = res.data.length - width * 32 * time}for (var i = 0; i < point_list.length; i += 8) {var p = point_list[i].point * 128 + point_list[i + 1].point * 64 + point_list[i + 2].point * 32 + point_list[i + 3].point * 16 + point_list[i + 4].point * 8 + point_list[i + 5].point * 4 + point_list[i + 6].point * 2 + point_list[i + 7].pointdata.push(p)}}jpPrinter.setPrint = function() { //打印并换行data.push(10)}jpPrinter.setPrintAndFeed = function(feed) { //打印并走纸feed个单位data.push(27)data.push(74)data.push(feed)}jpPrinter.setPrintAndFeedRow = function(row) { //打印并走纸row行data.push(27)data.push(100)data.push(row)}jpPrinter.getData = function() { //获取打印数据return data;};return jpPrinter; },Query: function() {var queryStatus = {};var buf;var dateView;queryStatus.getRealtimeStatusTransmission = function(n) { //查询打印机实时状态/*n = 1:传送打印机状态n = 2:传送脱机状态n = 3:传送错误状态n = 4:传送纸传感器状态*/buf = new ArrayBuffer(3)dateView = new DataView(buf)dateView.setUint8(0, 16)dateView.setUint8(1, 4)dateView.setUint8(2, n)queryStatus.query(buf)}queryStatus.query = function(buf) {wx.writeBLECharacteristicValue({deviceId: app.BLEInformation.deviceId,serviceId: app.BLEInformation.writeServiceId,characteristicId: app.BLEInformation.writeCharaterId,value: buf,success: function(res) {},complete: function(res) {console.log(res)buf = nulldateView = null;}})}return queryStatus;}};module.exports.jpPrinter = jpPrinter;

票据打印模板

receiptTest: function() { //票据测试var that = this;var canvasWidth = that.data.canvasWidthvar canvasHeight = that.data.canvasHeightvar command = esc.jpPrinter.createNew()command.init()command.setText("票据测试!");command.setPrint()command.setText("This is a receipt test!!!")command.setPrint()command.setText("二维码测试:")command.setPrint()command.setSelectSizeOfModuleForQRCode(5)command.setSelectErrorCorrectionLevelForQRCode(49)command.setStoreQRCodeData("佳博智汇网络")command.setPrintQRCode()command.setBarcodeWidth(30)command.setBarcodeHeight(20)command.setBarcodeContent(3,'1234567')command.setPrintBarCode()command.setBarCode(170, 180, "EAN8", 64, 1, 3, 3, "1234567")command.setPrint()command.setSelectJustification(0)command.setText("向左对齐")command.setPrint()wx.canvasGetImageData({canvasId: 'edit_area_canvas',x: 0,y: 0,width: canvasWidth,height: canvasHeight,success: function(res) {command.setBitmap(res)},complete: function(res) {console.log("finish")command.setPrint()that.setData({isReceiptSend: true})that.prepareSend(command.getData())}})// this.send(buff)}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/18415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】xformers与pytorch的版本对应关系

https://github.com/facebookresearch/xformers/tree/v0.0.23 找tag&#xff1a; tag下面写了对应关系&#xff1a; 安装指令就是&#xff1a; pip install xformers0.0.23 --no-deps -i https://download.pytorch.org/whl/cu118

react ant 表格实现 拖拽排序和多选

项目背景 : react ant 要实现 : 有多选功能(实现批量删除 , 也可以全选) 可以拖拽(可以复制 , 方便顶部的搜索功能) 要实现效果如下 1 这是最初的拖拽功能实现 , 不能复制表格里的内容 , 不符合要求 2 更改了ROW的内容 , 实现了可以复制表格内容 代码 //控制是否可以选中表格…

Unity中自动生成地图(代完善)

地图中有水果、房子、树木和道路。道路能通到水果旁。 代码&#xff1a; using UnityEngine; using System.Collections.Generic; using System.Text;public class TilemapGenerator : MonoBehaviour {public int mapWidth 30;public int mapHeight 20;private int[,] map;…

基于粒子群算法的网络最优节点部署优化matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于粒子群算法的网络最优节点部署优化,实现WSN网络的节点覆盖最大化。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运行 3.核心程序 .................…

Golang | Leetcode Golang题解之第118题杨辉三角

题目&#xff1a; 题解&#xff1a; func generate(numRows int) [][]int {ans : make([][]int, numRows)for i : range ans {ans[i] make([]int, i1)ans[i][0] 1ans[i][i] 1for j : 1; j < i; j {ans[i][j] ans[i-1][j] ans[i-1][j-1]}}return ans }

安装WordPress

第 1 步&#xff1a;下载并解压 wget https://wordpress.org/latest.tar.gz 然后使用以下命令提取包&#xff1a; tar -xzvf latest.tar.gz 第 2 步&#xff1a;创建数据库 比如数据库名称为wordpress&#xff0c;编码格式为 utf8mb4_general_ci 第 3 步&#xff1a;设置wp-con…

Notes for video: EDC-Con 2022/01 - EDC Conceptual Overview and Architecture

Eclipse Dataspace Connector 中文概念 Eclipse Dataspace Connector (EDC) 是一个开源项目&#xff0c;旨在提供一种标准化的方法来连接和共享数据空间中的数据。它是 Eclipse Foundation 下的一个项目&#xff0c;目标是促进数据共享和数据交换的互操作性。以下是 EDC 的一些…

【STL库源码剖析】list 简单实现

从此音尘各悄然 春山如黛草如烟 目录 list 的结点设计 list 的迭代器 list 的部分框架 迭代器的实现 容量相关相关函数 实现 insert 在指定位置插入 val 实现 push_back 在尾部进行插入 实现 erase 在指定位置删除 实现 pop_back 在尾部进行删除 实现 list 的头插、头删 实现…

代码质量与可维护性提升

代码质量和可维护性的提升是一个持续的过程&#xff0c;需要在开发过程中采取一系列的措施。下面是一些可以提高代码质量和可维护性的方法&#xff1a; 使用清晰的命名&#xff1a;使用有意义且易于理解的变量名、函数名和类名。这样可以增加代码的可读性和可理解性。 遵循编码…

CSS:cursor作用

cursor作用 介绍常用值及用途1. default:2. pointer:3. text:4. move:5. not-allowed:6. wait:7. crosshair:8. col-resize:9. row-resize:10. grab:11. grabbing: 举例 介绍 Web开发中&#xff0c;cursor 是一个CSS属性&#xff0c;用于控制当鼠标指针悬停在一个元素上时显示…

Leetcode3161. 物块放置查询(Go语言的红黑树 + 线段树)

题目截图 题目分析 每次1操作将会分裂成两块区间长度&#xff0c;以最近右端点记录左侧区间的长度即可 因此涉及到单点更新和区间查询 然后左右侧最近端点则使用redBlackTree&#xff0c;也就是python中的sortedlist ac code type seg []int// 把 i 处的值改成 val func (t …

【小呆的力学笔记】连续介质力学的知识点回顾二:应变度量

文章目录 3. 格林应变与阿尔曼西应变 3. 格林应变与阿尔曼西应变 变形体在变形前的线元 O A → \overrightarrow{OA} OA &#xff0c;在变形后变成 o a → \overrightarrow{oa} oa &#xff0c;那么应变应该度量这种线元变形前后的差别。 ∣ o a → ∣ 2 − ∣ O A → ∣ 2 …

OrangePi AIpro开箱评测

开箱评测 有幸受邀参与了CSDN与OrangePi组织的评测活动&#xff0c;今天刚收到快递。拆开快递能看到保护盒、电源、双头typec线这三样&#xff08;充电器和线有保护膜的我先拆掉了&#xff09; 打开保护盒&#xff0c;能看到上下两块黑色海棉包裹的开发板&#xff08;保护得不…

cs61B-sp21 | lab6

cs61B-sp21 | lab6 TODO 1 在 CapersRepository.java 中 static final File CAPERS_FOLDER null; // TODO Hint: look at the join // function in Utils在 Utils.java 我们找到 join 函数&#xff0c;第一个 join 的作用是将 first 和 others 连接起来形成一个路径…

IDEA2024创建maven项目

1、new->project 2、创建后展示 3、生成resources文件夹 4、测试--编写一个hello文件

react-server-side-render最新学习与实践

写在前面 server side render(ssr)服务端渲染 &#xff0c;亦即同构应用。主要有利于 seo 和首屏渲染&#xff0c;这是一篇比较新的可运行的结构设计&#xff0c;基于比较新的 react v16、react-router v5 的同构设计。结合了 redux(Flux 数据流实现)。 项目地址:react-ssr-s…

[书生·浦语大模型实战营]——在茴香豆 Web 版中创建自己领域的知识问答助手

茴香豆是一个基于LLM的领域知识助手&#xff0c;可以用于解答群聊中的问题。接下来是创建过程。 1.打开茴香豆Web版&#xff0c;创建自己的领域库。 地址&#xff1a;茴香豆Web版 这里类似于注册账号&#xff0c;你输入知识库的名称以及密码&#xff0c;然后它就会创建一个知识…

Vue3实战笔记(49)—Vue 3响应式魔法:ref vs reactive深入对决

文章目录 前言一、 ref 和 reactive主要差异总结 前言 Vue 3 中的 ref 和 reactive 都是用于创建响应式数据的工具&#xff0c;但它们之间存在一些重要的区别。今天聊聊它们之间的主要差异&#xff1a; 一、 ref 和 reactive主要差异 数据类型&#xff1a; ref 主要用于处理…

【微服务】部署mysql集群,主从复制,读写分离

两台服务器做如下操作 1.安装mysqldocker pull mysql:5.72.启动以及数据挂载 mkdir /root/mysql/data /root/mysql/log /root/mysql/conf touch my.conf //mysql的配置文件docker run --name mysql \ -e MYSQL_ROOT_PASSWORD123456 \ -v /root/mysql/data:/var/lib/mysql \ -v…

飞睿智能高精度、低功耗测距,无线室内定位UWB芯片如何改变智能家居

在数字化和智能化快速发展的今天&#xff0c;定位技术已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;传统的GPS定位技术在室内环境中往往束手无策&#xff0c;给我们的生活带来了诸多不便。幸运的是&#xff0c;随着科技的不断进步&#xff0c;一种名为UWB&#xf…