苹果手机支付宝小程序中,一点问题都没有,安卓支付宝小程序,打印出来是乱码不说,格式角度出纸也有问题,用的汉印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)
}
}
2 个回复
h***@163.com (作者)
顶一下,求助
h***@163.com (作者)
1111