JavaScript使用原生JS(native.JS)连接蓝牙打印机,打印一维码、二维码

使用说明:

  1. 代码已经过测试,可正常使用
  2. 测试蓝牙打印机为 商米(SUNMI)V2S plus打印机,此设备为一体机,与PDA连接
  3. 打印出的一维码和二维码中包含汉字与字母,使用其他设备扫描时可能会出现乱码的情况,出现此现象的原因为扫描设备的配置太低,无法解析包含汉字的二维码,使用手机扫描时即可正常显示
  4. 代码中的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连接蓝牙打印机打印一维码和二维码相关推荐

  1. 蓝牙连接打印机打印文字图片条形码二维码 用的是Gprinter打印机

    实现了蓝牙打印,正在进一步完善,欢迎留言交流 :) Github链接

  2. uni-app H5+ 连接蓝牙打印机打印文字及二维码

    基于Native.js 实现的连接蓝牙打印机 打印效果图 核心代码 测试代码 运行设备及环境 PS: PPS: Demo 打印效果图 核心代码 /*** @Description: 蓝牙打印类 基于h ...

  3. 微信小程序实现蓝牙打印(图片、二维码、文字)

    小程序连接蓝牙打印机实现打印功能 这真是一块超级难啃的骨头,我也是参考了很多文章才勉强理解,但是如果你啃动了,那你以后也有了拿得出手的资本了 完整DEMO地址可直接下载下来使用 搜索与连接蓝牙,这个我 ...

  4. JS使用Lodop控件打印表单和二维码

    有关Lodop的查询可看文章:Lodop打印条码二维码设置多宽不一定是多宽 一.了解Lodop 1.1Lodop的定义 Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内 ...

  5. SMARTFORM —— 打印一维码、二维码

    SMARTFORM 打印一维码.二维码 实施系统:ecc 6 ehp7 PS:固定二维码大小方法,设置如下(Moudule Size 设置二维码大小范围00001-99999可以估计一下存储内容的最大 ...

  6. js生成一维码和二维码

    实现效果:页面同时显示一维条形码和二维码 引入一维码和二维码的js生成文件:barcode 和 qrcode <script type="text/javascript" s ...

  7. 【C#】最全单据打印(打印模板、条形码二维码、字体样式、项目源码)

    系列文章 [C#]编号生成器(定义单号规则.固定字符.流水号.业务单号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/12912978 ...

  8. delphi 解析一维条码_一维码和二维码区别有哪些

    我们天天都可以看到一维码,商品上的条码就是一维码,那么,一维码和二维码有哪些区别呢?今天兆麟电子就来给大家介绍一下,一维码和二维码的本质区别有哪些. 一维码和二维码区别有哪些 一维码和二维码有哪些区别 ...

  9. 技术解读 一维码,二维码,zxing

    一维码,二维码,zxing 什么是一维码.二维码?一维码就是商品包装盒上的条形码,例如:书本后面的条形码,在真维斯或者其他等品牌店的衣服标签上都可以看到,一维码的应用已经很广泛了:而二维码就是.... ...

最新文章

  1. 通过进程ID得到进程名
  2. python按列输出_在python中创建漂亮的列输出
  3. Linux测量进程内存峰值,linux / unix进程的峰值内存使用情况
  4. c语言随机函数怎么循环,如何在C ++循环中生成不同的随机数?
  5. android上最好的linux终端,如何在带有Termux的Android上使用Linux命令行 | MOS86
  6. 初创团队配置_咨询整理(熊猫TV首席架构师)
  7. LINUX下载编译commoncpp/ucommon
  8. js获取chrome浏览器版本信息
  9. Flink任务通过RoaringBitmap实现去重
  10. mysql 唯一性榆树_榆树有多少种
  11. 笛卡尔积实现-JavaScript版
  12. 苹果手机如何切换沙盒账号登录
  13. Excel_软件介绍
  14. Windows10更新后耳机没声音
  15. c#--使用FileUpload控件上传图片
  16. 服务器端如何判断客户端是不是手机
  17. java 图类_java笔记之图形类详解
  18. AI“看片儿”比人快,鉴黄师却说不靠谱?
  19. Oracle SQL 性能优化规范
  20. 计算机哪个专业在未来前景好,计算机中前景好的专业排名

热门文章

  1. 题解 [校内测试]图森破
  2. vue3 watch 监听多值以及深度监听用法
  3. python掷骰子猜大小
  4. 利用python爬虫关键词批量下载高清大图!
  5. 泥瓦匠之 Java 的成长感悟
  6. 四方光电扬尘传感器PM3006助力打赢蓝天保卫战
  7. c语言棋盘光标怎么删除,删除光标前的字符按什么键
  8. php 预编译,预编译的prepare statements 管理, 实现和思路
  9. 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?
  10. 对微信卖小电影的一次内网漫游