微信小程序 蓝牙打印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 7
      49 选择纠错等级 M 15
      50 选择纠错等级 Q 25
      51 选择纠错等级 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].point
        data.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 = null
          dateView = null;
        }
      })
    }
    return queryStatus;
  }

};

module.exports.jpPrinter = jpPrinter;

票据打印模板

receiptTest: function() { //票据测试
    var that = this;
    var canvasWidth = that.data.canvasWidth
    var canvasHeight = that.data.canvasHeight
    var 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)
  }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: UIApp微信小程序蓝牙批量打印设置提供了简便的方式来配置和管理蓝牙打印设备。通过这个设置,用户可以轻松地连接和操作多个蓝牙打印机。 首先,在UIApp微信小程序中,用户可以点击设置菜单进入蓝牙打印设置页面。在该页面上,用户可以看到已经连接的蓝牙打印机列表,并可以选择连接新的打印机。 用户可以通过点击搜索按钮来扫描周围的蓝牙设备。一旦找到了需要连接的打印机,用户可以点击该设备并输入密码(如果需要)进行连接。连接成功后,打印机将会在已连接设备列表中显示。 在已连接设备列表中,用户可以选择默认打印机。默认打印机将是用户首选的打印设备,在用户不指定打印机时将自动选择该设备进行打印。 UIApp提供了多种打印设置选项供用户选择。用户可以根据需要设置打印机的纸张大小、页面方向、打印质量等参数。此外,用户还可以选择打印多份、打印双面等功能。 通过这个蓝牙批量打印设置,用户可以方便地管理和配置多个蓝牙打印设备,提高打印效率。无论是在家庭环境还是办公场所,UIApp微信小程序蓝牙批量打印设置都将为用户提供便捷的打印操作体验。 ### 回答2: 要在UIapp微信小程序中设置蓝牙批量打印,首先需要确保小程序已经获取了蓝牙权限。接下来,我们需要使用微信小程序提供的蓝牙接口进行相关设置。 首先,我们需要调用`wx.getBluetoothAdapterState`方法来获取蓝牙适配器的状态。通过判断蓝牙适配器状态中的`available`字段来确定当前设备是否支持蓝牙功能。如果支持蓝牙功能,则可以继续进行下一步设置。 接下来,我们需要使用`wx.openBluetoothAdapter`方法来打开蓝牙适配器。在蓝牙适配器打开后,我们可以调用`wx.startBluetoothDevicesDiscovery`方法来开始搜索附近的蓝牙设备。 搜索到蓝牙设备后,可以调用`wx.getBluetoothDevices`方法来获取搜索到的设备列表。可以通过遍历设备列表来找到需要连接的蓝牙设备。找到目标设备后,可以使用`wx.createBLEConnection`方法来与设备建立蓝牙连接。 连接成功后,我们可以使用`wx.getBLEDeviceServices`方法来获取设备的服务列表。通过遍历服务列表,找到需要使用的服务,然后使用`wx.getBLEDeviceCharacteristics`方法获取服务中的特征值列表。 接下来,我们可以调用`wx.writeBLECharacteristicValue`方法来向特征值写入数据。这样可以实现向蓝牙设备发送打印指令。 最后,当不再需要与蓝牙设备通信时,可以调用`wx.closeBLEConnection`方法来断开蓝牙连接。同时,为了节约设备电量,也可以调用`wx.stopBluetoothDevicesDiscovery`方法停止蓝牙设备的搜索。 以上就是在UIapp微信小程序中设置蓝牙批量打印的步骤。实现这些功能可以通过使用微信小程序蓝牙接口,并通过正确的参数和方法调用来完成。 ### 回答3: uiapp微信小程序蓝牙批量打印设置是指在使用uiapp微信小程序时,通过蓝牙连接多个打印设备,实现批量打印的设置操作。 首先,在uiapp微信小程序中,我们需要打开蓝牙设备的权限,并搜索附近的可连接打印设备。在搜索到设备后,可以选择其中一个设备进行连接。 连接成功后,可以进行打印设置的操作。首先,可以选择要打印的文件或内容,可以是文本、图片等。然后,可以设置打印的方式,比如单面打印还是双面打印、横向打印还是纵向打印等。还可以设置打印的质量,比如打印的分辨率、图像的色彩等。 除了基本的打印设置,还可以进行高级设置。比如可以设置打印的页码范围,只打印指定的页码或者打印全部页。还可以设置打印份数,指定需要打印的份数。还可以设置打印的排版方式,比如页面的边距、页眉页脚等。 在设置完成后,可以点击打印按钮,开始批量打印。此时,uiapp微信小程序会将要打印的内容发送给已连接的蓝牙设备,并开始打印操作。可以对打印过程进行监控,等待打印完成。打印完成后,可以查看打印结果,并根据需要选择是否继续打印其他内容或关闭连接。 总之,uiapp微信小程序蓝牙批量打印设置包括打开蓝牙权限、搜索设备、连接设备、选择打印内容、设置打印方式和质量、高级设置、打印操作监控等步骤。通过这些设置,用户可以方便地在uiapp微信小程序中实现蓝牙批量打印

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值