收藏
回答

writeBLECharacteristicValue蓝牙打印机命令成功,但是打印出来的文字乱码要?

writeBLECharacteristicValue() {

    // 手动编码 UTF-8

    function strToUTF8(str{

      let utf8 = [];

      for (let i = 0; i < str.length; i++) {

        let code = str.charCodeAt(i);

        if (code <= 0x7F) {

          // 1字节

          utf8.push(code);

        } else if (code <= 0x7FF) {

          // 2字节

          utf8.push(0xC0 | (code >> 6));

          utf8.push(0x80 | (code & 0x3F));

        } else if (code <= 0xFFFF) {

          // 3字节

          utf8.push(0xE0 | (code >> 12));

          utf8.push(0x80 | ((code >> 6) & 0x3F));

          utf8.push(0x80 | (code & 0x3F));

        } else if (code <= 0x10FFFF) {

          // 4字节

          utf8.push(0xF0 | (code >> 18));

          utf8.push(0x80 | ((code >> 12) & 0x3F));

          utf8.push(0x80 | ((code >> 6) & 0x3F));

          utf8.push(0x80 | (code & 0x3F));

        }

      }

      return new Uint8Array(utf8);

    }

    // 要打印的文本(包含中文、拼音和维吾尔语字符)

    var text = '您好  hello  ياخشىمۇسىز';




    // 手动将字符串转换为 UTF-8 编码的字节数组

    const byteArray = strToUTF8(text);




    // 打印机的控制命令(ESC/POS命令)

    const ESC = 0x1B// ESC命令

    const INIT_CMD = new Uint8Array([ESC, 0x40]); // 初始化命令 ESC @

    const ALIGN_CENTER_CMD = new Uint8Array([ESC, 0x610x01]); // 设置居中对齐 ESC a 1

    const CUT_CMD = new Uint8Array([ESC, 0x6D]); // 切纸命令 ESC m




    // 合并所有命令和字节数组

    const fullCommand = new Uint8Array([

      ...INIT_CMD, // 初始化命令

      ...ALIGN_CENTER_CMD, // 居中对齐

      ...byteArray, // 转换后的字节数组

      ...CUT_CMD // 切纸命令

    ]);




    // 向蓝牙打印机发送命令

    wx.writeBLECharacteristicValue({

      writeType'write',

      deviceIdthis._deviceId, // 蓝牙设备ID

      serviceIdthis._serviceId, // 蓝牙服务ID

      characteristicIdthis._characteristicId, // 蓝牙特征ID

      value: fullCommand.buffer, // 发送的命令和文本数据

      writeType'write'// 写操作

      success(res) {

        console.log("命令发送成功", res);

      },

      fail(err) {

        console.error("命令发送失败", err);

      }

    });

  },



回答关注问题邀请回答
收藏

2 个回答

  • Demons
    Demons
    12-11

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    12-11
    有用
    回复
  • 阿达西点餐吧🔎
    阿达西点餐吧🔎
    12-10

    12-10
    有用
    回复
登录 后发表内容