zoukankan      html  css  js  c++  java
  • (JavaScript) JS方式调用POS机蓝牙打印

    function print(mac_address) {
        if (!mac_address) {
            mui.toast('请选择蓝牙打印机');
            return;
        }
    
        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();
        device = BAdapter.getRemoteDevice(mac_address);
        plus.android.importClass(device);
        bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);
        plus.android.importClass(bluetoothSocket);
        if (!bluetoothSocket.isConnected()) {
            console.log('检测到设备未连接,尝试连接....');
            bluetoothSocket.connect();
        }
        console.log('设备已连接');
        if (bluetoothSocket.isConnected()) {
            var outputStream = bluetoothSocket.getOutputStream();
            plus.android.importClass(outputStream);
    
    
            // outputStream.write([0x1B,0x0E]); // 设置打印字符以正常宽度的2倍打印。
            // outputStream.write([0x1B,0x14]); // 取消字符倍宽打印。
    
            outputStream.write([0x1B, 0x57, 0x02]); // 设置字符倍宽倍高打印
            outputStream.write([0x1B, 0x61, 0x01]); // 设置字符倍宽倍高打印
            outputStream.write(plus.android.invoke("
    七天在线
    ", 'getBytes', 'gbk')); //bytes    
            outputStream.write([0x1B, 0x57, 0x01]); // 设置字符倍宽倍高打印
    
            outputStream.write([0x1B, 0x61, 0x00]); // 选择对齐方式左对齐
            outputStream.write(plus.android.invoke("
    结账单号:123456789
    ", 'getBytes', 'gbk')); //bytes     
            outputStream.write(plus.android.invoke("
    账单金额:100元
    ", 'getBytes', 'gbk')); //bytes     
            outputStream.write(plus.android.invoke("
    支付方式:支付宝
    ", 'getBytes', 'gbk')); //bytes
            outputStream.write(plus.android.invoke("
    结账时间:2019年6月3日13:52:18
    ", 'getBytes', 'gbk')); //bytes
            outputStream.write(plus.android.invoke("
    交易单号:8888888888
    
    
    
    
    
    
    ", 'getBytes', 'gbk')); //bytes
    
            outputStream.write([0x1F, 0x11, 0x00, 0x16, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e,
                0x62, 0x61, 0x69, 0x64, 0x75, 0x2e, 0x63, 0x6f, 0x6d, 0x2f
            ]); // 打印二维码
    
            outputStream.flush();
            device = null //这里关键
            bluetoothSocket.close(); //必须关闭蓝牙连接否则意外断开的话打印错误
        }
    }

    ☞:ESC参考博客

  • 相关阅读:
    云开发数据库 Firebase Firestore 零基础入门视频实战教程(7 个视频)
    在 2021 年你需要掌握的 7 种关于 JavaScript 的数组方法
    2021 年写 JavaScript 代码的 17 个优化技巧
    Redis 学习笔记系列文章之 Redis 的安装与配置 (一)
    selenium webdriver 删除元素
    FFT板子
    pytest一:运行几个简单的测试用例终端显示的信息
    JS 日期取年月日
    将博客搬至CSDN
    c语言编译器
  • 原文地址:https://www.cnblogs.com/zyulike/p/10968193.html
Copyright © 2011-2022 走看看