js连接蓝牙打印机打印一维码和二维码
JavaScript使用原生JS(native.JS)连接蓝牙打印机,打印一维码、二维码
使用说明:
- 代码已经过测试,可正常使用
- 测试蓝牙打印机为 商米(SUNMI)V2S plus打印机,此设备为一体机,与PDA连接
- 打印出的一维码和二维码中包含汉字与字母,使用其他设备扫描时可能会出现乱码的情况,出现此现象的原因为扫描设备的配置太低,无法解析包含汉字的二维码,使用手机扫描时即可正常显示
- 代码中的MAC地址一定要改为自己蓝牙打印机的蓝牙Mac地址
<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title></title><link rel="stylesheet" type="text/css" href="../../css/mui.css" /><script src="../../js/mui.js" type="text/javascript" charset="utf-8"></script></head><body><header class="mui-bar mui-bar-nav" style="background-color: #007AFF;"><a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left" style="color: #fff;"></a><h1 class="mui-title" style="color: #fff;">蓝牙打印</h1></header><div class="mui-content" style="padding-top: 50px;"><button type="button" class="mui-btn mui-btn-blue mui-btn-block" id="print1">打印条形码</button><button type="button" class="mui-btn mui-btn-blue mui-btn-block" id="print2">打印二维码</button></div><script type="text/javascript">var bluetoothSocket = null;var bluetoothPrinterMac = "00:11:22:33:44:55"; //蓝牙打印机的MAC地址window.onload = function() {concatBlue();};//打印条形码document.getElementById("print1").addEventListener("tap", () => {printTM();});//打印二维码document.getElementById("print2").addEventListener("tap", () => {printQrcode();});//连接蓝牙function concatBlue() {mui.plusReady(function() {main = plus.android.runtimeMainActivity();BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");UUID = plus.android.importClass("java.util.UUID");uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); //不需更改BAdapter = BluetoothAdapter.getDefaultAdapter();BAdapter.cancelDiscovery(); //停止扫描device = BAdapter.getRemoteDevice(bluetoothPrinterMac);plus.android.importClass(device);bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);plus.android.importClass(bluetoothSocket);});};/*** @Description:打印初始化*/function initPrinter() {console.log('打印初始化开始');var outputStream = bluetoothSocket.getOutputStream();plus.android.importClass(outputStream);OutputStreamWriter = plus.android.importClass('java.io.OutputStreamWriter')writer = new OutputStreamWriter(outputStream, 'GBK')plus.android.importClass(writer)writer.write(0x1B)writer.write(0x40)writer.flush()console.log('打印初始化结束');}/*** @Description: 打印条码*/function printTM() {var byteStr = '这是条形码Demo';if (!bluetoothSocket.isConnected()) {console.log('断开了,需要重新连接,连接中');bluetoothSocket.connect();}initPrinter();var bytes = plus.android.invoke(byteStr, 'getBytes', 'gbk')var length = bytes.lengthoutputStream = bluetoothSocket.getOutputStream()plus.android.importClass(outputStream)OutputStreamWriter = plus.android.importClass('java.io.OutputStreamWriter')writer = new OutputStreamWriter(outputStream, 'GBK')plus.android.importClass(writer)writer.write(0x1B); //打印复位writer.write(0x40); //打印复位writer.flush();var vstr = '{B' + byteStr;var bytes = plus.android.invoke(vstr, 'getBytes', 'gbk');var length = bytes.lengthwriter.write(0x1D);writer.write(0x6B);writer.write(73);writer.write(length);writer.write(vstr);writer.flush();//换行writer.write("\n");writer.flush();writer.write(byteStr);writer.flush();setAlignPosition(1);console.log('条码打印成功');ff(2);}/*** 方法说明 设置文本对齐方式* @param align 打印位置 0:居左(默认) 1:居中 2:居右*/function setAlignPosition(align) {writer.write(0x1B);writer.write(0x61);writer.write(1);writer.flush();}/*** @Description: 二维码打印*/function printQrcode() {var byteStr = '这是二维码Demo';if (!bluetoothSocket.isConnected()) {console.log('断开了,需要重新连接,连接中');bluetoothSocket.connect();}// initinitPrinter();var moduleSize = 8var bytes = plus.android.invoke(byteStr, 'getBytes', 'gbk')var length = bytes.lengthoutputStream = bluetoothSocket.getOutputStream()plus.android.importClass(outputStream)OutputStreamWriter = plus.android.importClass('java.io.OutputStreamWriter')writer = new OutputStreamWriter(outputStream, 'GBK')plus.android.importClass(writer)// 缓存二维码数据writer.write(0x1D) // initwriter.write('(k') // adjust height of barcodewriter.write(length + 3) // plwriter.write(0) // phwriter.write(49) // cnwriter.write(80) // fnwriter.write(48) //writer.write(byteStr)// 二维码纠错等级writer.write(0x1D)writer.write('(k')writer.write(3)writer.write(0)writer.write(49)writer.write(69)writer.write(48)// 设置二维码块大小writer.write(0x1D)writer.write('(k')writer.write(3)writer.write(0)writer.write(49)writer.write(67)writer.write(moduleSize)// 打印已缓存的数据二维码writer.write(0x1D)writer.write('(k')writer.write(3) // plwriter.write(0) // phwriter.write(49) // cnwriter.write(81) // fnwriter.write(48) // mwriter.flush()// 二维码打印 结束ff(2);console.log('二维码打印结束')}/*** @Description:走纸*/function ff(n) {// bluetoothSocket.close();if (!bluetoothSocket.isConnected()) {console.log('断开了,需要重新连接,连接中');bluetoothSocket.connect();}if (bluetoothSocket.isConnected()) {console.log('连接成功');//initPrinter();const line = n || 1;var outputStream = bluetoothSocket.getOutputStream();plus.android.importClass(outputStream);outputStream.write(0x1B);outputStream.write(0x64);outputStream.write(line); // 行数outputStream.flush();}}</script></body>
</html>
js连接蓝牙打印机打印一维码和二维码相关推荐
- 蓝牙连接打印机打印文字图片条形码二维码 用的是Gprinter打印机
实现了蓝牙打印,正在进一步完善,欢迎留言交流 :) Github链接
- uni-app H5+ 连接蓝牙打印机打印文字及二维码
基于Native.js 实现的连接蓝牙打印机 打印效果图 核心代码 测试代码 运行设备及环境 PS: PPS: Demo 打印效果图 核心代码 /*** @Description: 蓝牙打印类 基于h ...
- 微信小程序实现蓝牙打印(图片、二维码、文字)
小程序连接蓝牙打印机实现打印功能 这真是一块超级难啃的骨头,我也是参考了很多文章才勉强理解,但是如果你啃动了,那你以后也有了拿得出手的资本了 完整DEMO地址可直接下载下来使用 搜索与连接蓝牙,这个我 ...
- JS使用Lodop控件打印表单和二维码
有关Lodop的查询可看文章:Lodop打印条码二维码设置多宽不一定是多宽 一.了解Lodop 1.1Lodop的定义 Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内 ...
- SMARTFORM —— 打印一维码、二维码
SMARTFORM 打印一维码.二维码 实施系统:ecc 6 ehp7 PS:固定二维码大小方法,设置如下(Moudule Size 设置二维码大小范围00001-99999可以估计一下存储内容的最大 ...
- js生成一维码和二维码
实现效果:页面同时显示一维条形码和二维码 引入一维码和二维码的js生成文件:barcode 和 qrcode <script type="text/javascript" s ...
- 【C#】最全单据打印(打印模板、条形码二维码、字体样式、项目源码)
系列文章 [C#]编号生成器(定义单号规则.固定字符.流水号.业务单号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/12912978 ...
- delphi 解析一维条码_一维码和二维码区别有哪些
我们天天都可以看到一维码,商品上的条码就是一维码,那么,一维码和二维码有哪些区别呢?今天兆麟电子就来给大家介绍一下,一维码和二维码的本质区别有哪些. 一维码和二维码区别有哪些 一维码和二维码有哪些区别 ...
- 技术解读 一维码,二维码,zxing
一维码,二维码,zxing 什么是一维码.二维码?一维码就是商品包装盒上的条形码,例如:书本后面的条形码,在真维斯或者其他等品牌店的衣服标签上都可以看到,一维码的应用已经很广泛了:而二维码就是.... ...
最新文章
- 通过进程ID得到进程名
- python按列输出_在python中创建漂亮的列输出
- Linux测量进程内存峰值,linux / unix进程的峰值内存使用情况
- c语言随机函数怎么循环,如何在C ++循环中生成不同的随机数?
- android上最好的linux终端,如何在带有Termux的Android上使用Linux命令行 | MOS86
- 初创团队配置_咨询整理(熊猫TV首席架构师)
- LINUX下载编译commoncpp/ucommon
- js获取chrome浏览器版本信息
- Flink任务通过RoaringBitmap实现去重
- mysql 唯一性榆树_榆树有多少种
- 笛卡尔积实现-JavaScript版
- 苹果手机如何切换沙盒账号登录
- Excel_软件介绍
- Windows10更新后耳机没声音
- c#--使用FileUpload控件上传图片
- 服务器端如何判断客户端是不是手机
- java 图类_java笔记之图形类详解
- AI“看片儿”比人快,鉴黄师却说不靠谱?
- Oracle SQL 性能优化规范
- 计算机哪个专业在未来前景好,计算机中前景好的专业排名
热门文章
- 题解 [校内测试]图森破
- vue3 watch 监听多值以及深度监听用法
- python掷骰子猜大小
- 利用python爬虫关键词批量下载高清大图!
- 泥瓦匠之 Java 的成长感悟
- 四方光电扬尘传感器PM3006助力打赢蓝天保卫战
- c语言棋盘光标怎么删除,删除光标前的字符按什么键
- php 预编译,预编译的prepare statements 管理, 实现和思路
- 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?
- 对微信卖小电影的一次内网漫游