h***@163.com
h***@163.com
  • 发布:2025-04-08 17:09
  • 更新:2025-04-09 11:46
  • 阅读:233

江湖救急:安卓低功耗蓝牙打印出来乱码,IOS正常

分类:uni-app

苹果手机支付宝小程序中,一点问题都没有,安卓支付宝小程序,打印出来是乱码不说,格式角度出纸也有问题,用的汉印HM-A300E,这是代码,试了很多方法,分片,转UTF-8,都不行,有大佬知道怎么回事吗,求指点,江湖救急!!!

const handlePrint = async (item) => {
try {
// 检查蓝牙状态
const isBluetoothReady = await bluetoothStore.checkBluetoothStatus()

if (!isBluetoothReady) {  
  toast.error({  
    msg: '蓝牙设备未连接',  
    duration: 1500  
  })  
  setTimeout(() => {  
    uni.navigateTo({  
      url: '/pages/blueTooth/index',  
      fail: (error) => {  
        console.error('导航失败:', error)  
      }  
    })  
  }, 1500)  
  return  
}  

// 获取蓝牙服务和特征值  
let serviceId = ''  
let characteristics = null  // 将特征值变量提到外面  
try {  
  // 获取所有服务  
  const services = await uni.getBLEDeviceServices({  
    deviceId: bluetoothStore.currentDevice.deviceId  
  })  
  console.log('可用的蓝牙服务:', services)  

  if (services.services && services.services.length > 0) {  
    // 直接使用第一个服务  
    // 用第四个实时  
    serviceId = services.services[0].uuid  

    // 获取特征值  
    const result = await uni.getBLEDeviceCharacteristics({  
      deviceId: bluetoothStore.currentDevice.deviceId,  
      serviceId: serviceId  
    })  
    characteristics = result.characteristics  // 保存特征值列表  
    console.log('特征值列表:', result)  
    console.log(characteristics[0].characteristicId, '看下特征值')  
  } else {  
    throw new Error('未找到可用的蓝牙服务')  
  }  
} catch (error) {  
  console.error('获取蓝牙服务失败:', error)  
  toast.error({  
    msg: '蓝牙服务异常',  
    duration: 1500  
  })  
  return  
}  

// 如果蓝牙已连接,显示打印数量选择器  
message.confirm({  
  title: '打印数量',  
}).then(async () => {  
  try {  

    // const labelCommands =  
    //   `! 0 628 620 620 ${printCount.value}  
    //     TEXT 7 1 60 340 RK241125236  
    //     TEXT 7 0 400 340 ${item.providerName}  
    //     BARCODE-TEXT 7 2 2  
    //     BARCODE 128 1 20 129 80 370 ${item.usedSpecNo}  
    //     TEXT 7 0 60 510 ${item.specCode}  
    //     TEXT 7 0 420 510 ${boxNum.value}箱,${packageNum.value}件  
    //     TEXT 7 0 60 550 ${item.remark}  
    //     FORM  
    //     PRINT`  
    const labelCommands =  
      '! 0 628 620 620 1\r\n' +  
      'TEXT 7 1 60 340 RK241125236\r\n' +  
      'TEXT 7 0 400 340 供应商名称\r\n' +  
      'BARCODE-TEXT 7 2 2\r\n' +  
      'BARCODE 128 1 20 129 80 370 123456789\r\n' +  
      'TEXT 7 0 60 510 规格编码\r\n' +  
      'TEXT 7 0 420 510 1箱,10件\r\n' +  
      'TEXT 7 0 60 550 备注信息\r\n' +  
      'FORM\r\n' +  
      'PRINT\r\n';  

    const gbkBuffer = iconv.encode(labelCommands, 'gbk')  
    const buffer = gbkBuffer.buffer.slice(gbkBuffer.byteOffset, gbkBuffer.byteOffset + gbkBuffer.length)  

    if (!characteristics || !characteristics[0]) {  
      throw new Error('未找到可用的蓝牙特征值')  
    }  

    await uni.writeBLECharacteristicValue({  
      deviceId: bluetoothStore.currentDevice.deviceId,  
      serviceId: characteristics[0].serviceId,  
      characteristicId: characteristics[0].characteristicId,  
      value: buffer,  
      writeType: 'writeNoResponse'  
    })  

    toast.success('打印完成')  
  } catch (error) {  
    console.error('打印错误:', error)  
    toast.error({  
      msg: '请先开启蓝牙',  
      duration: 1500  
    })  
    setTimeout(() => {  
      uni.navigateTo({ url: '/pages/blueTooth/index' })  
    }, 1500)  
  }  
}).catch(() => {  
  // 取消按钮的处理  
  printCount.value = 1  
  boxNum.value = 1  
  packageNum.value = 1  
})  

} catch (error) {
toast.error({
msg: '请先开启蓝牙',
duration: 1500
})
setTimeout(() => {
uni.navigateTo({ url: '/pages/blueTooth/index' })
}, 1500)
}
}

2025-04-08 17:09 负责人:无 分享
已邀请:
h***@163.com

h***@163.com (作者)

顶一下,求助

h***@163.com

h***@163.com (作者)

1111

要回复问题请先登录注册