w***@163.com
w***@163.com
  • 发布:2019-09-26 14:10
  • 更新:2021-06-22 11:37
  • 阅读:1871

微信小程序蓝牙写入数据API没有任何回调

分类:uni-app
let oStr = "FF0004440100000200"  
let buffer = that.string2buffer(oStr)  
wx.writeBLECharacteristicValue({  
    deviceId: that.deviceId,  
    serviceId: that.serviceId,  
    characteristicId: that.writeUUID,  
    value: buffer,  
    success(res) {  
        console.log('写入成功')  
    },  
    fail(res) {  
        console.log('写入失败')  
    },  
    complete(res) {  
        console.log('写入完成')  
    }  
});  

/**  
 * 将字符串转换成ArrayBufer  
 */  
string2buffer(str) {  
    let val = ""  
    if (!str) return;  
    let length = str.length;  
    let index = 0;  
    let array = []  
    while (index < length) {  
        array.push(str.substring(index, index + 2));  
        index = index + 2;  
    }  
    val = array.join(",");  

    // 将16进制转化为ArrayBuffer  
    return new Uint8Array(val.match(/[\da-f]{2}/gi).map(function(h) {  
        return parseInt(h, 16)  
    })).buffer  
},

写入数据后不管是success还是fail还是complete都不执行,我把oStr字符串的长度改成3以内,就会有回调,超过这个长度就没有任何回调。
API上写的是超过20个字节ios没有回调,现在没超过20个字节用的还是安卓手机

2019-09-26 14:10 负责人:无 分享
已邀请:
w***@163.com

w***@163.com (作者) - 111

我用原生微信小程序的demo试过写数据,不管多长都会有回调的

王宏宇

王宏宇

我是同样的问题 请问你是怎么解决的啊?

八维城市

八维城市

若单次写入数据过长,iOS 上存在系统不会有任何回调的情况(包括错误回调)

8***@qq.com

8***@qq.com

可以直接延时后执行下一步 不要在回调里执行 应该是ios WithoutResponse 加个setTimeout 直接执行监听notify操作可行

要回复问题请先登录注册