1***@qq.com
1***@qq.com
  • 发布:2019-07-25 17:42
  • 更新:2019-11-26 09:24
  • 阅读:6127

uniapp-uni.writeBLECharacteristicValue方法回调OK-打印机无反应

分类:uni-app

//向低功耗蓝牙设备特征值中写入二进制数据
//特征值支持是 write
//方法回调 {"errMsg":"writeBLECharacteristicValue:ok"}
//打印机无反应
是BUG吗?
var testString = '010101';
const buffer = new ArrayBuffer(testString.length);
const dataView = new DataView(buffer);
for (var i = 0; i < testString.length; i++) {
dataView.setUint8(i,testString[i]);
}

                                    uni.writeBLECharacteristicValue({  
                                        // 这里的 deviceId 需要在 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取  
                                        deviceId,  
                                        // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取  
                                        serviceId,  
                                        // 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取  
                                        characteristicId,  
                                        // 这里的value是ArrayBuffer类型  
                                        value: buffer,  
                                        success(res) {  
                                            console.log(JSON.stringify(res))  
                                        },  
                                        fail(res) {  
                                            console.log(JSON.stringify(res))  
                                        }  
                                    })
2019-07-25 17:42 负责人:无 分享
已邀请:
小了个白

小了个白

您好,请问您该问题解决了没?我现在向低功耗蓝设备备输入信息(我直接把官网上的案例复制发送),返回writeBLECharacteristicValue:ok,但是设备就是没收到数据,能否指点一二,谢谢

  • 太2真人

    我也是。你搞定了 没

    2019-11-26 14:25

  • 小了个白

    回复 太2真人: 你好,我这边现在可以了,之前是不行的原因是因为特征值的问题,特征值写入跟特征值 notify 或者 indicate 同时为true时,我这边就可以收到数据,而且,在这个uni.onBLECharacteristicValueChange()方法中获取返回值时,你需要把返回的ArrayBuffer类型转换才能看到

    2019-11-26 16:30

  • 太2真人

    回复 小了个白:

    17:59:52.489 {"uuid":"00001001-0000-1000-8000-00805F9B34FB","properties":{"read":true,"write":false,"notify":false,"indicate":false}} at js/common.js:139

    17:59:52.509 {"uuid":"00001002-0000-1000-8000-00805F9B34FB","properties":{"read":false,"write":false,"notify":true,"indicate":false}} at js/common.js:139

    17:59:52.529 {"uuid":"00001003-0000-1000-8000-00805F9B34FB","properties":{"read":false,"write":true,"notify":false,"indicate":false}} at js/common.js:139

    17:59:52.549 {"uuid":"00001004-0000-1000-8000-00805F9B34FB","properties":{"read":true,"write":false,"notify":false,"indicate":false}} at js/common.js:139

    17:59:52.569 {"uuid":"00001005-0000-1000-8000-00805F9B34FB","properties":{"read":true,"write":true,"notify":false,"indicate":false}}


    哥。我只能接收到一个字符。不知道什么原因。

    2019-11-26 18:01

  • 小了个白

    回复 太2真人: 这个我也不太清除,你只能排查看看,问问你们硬件,蓝牙返回的数据为什么,然后网上有很多可以将buffer类型转换为16进制字符串的函数方法,你就试试看吧,不行你就加我qq(1752851362),然后在探讨一下

    /*



    • @params1 { ArrayBuffer } buffer 要转换成16进制字符串的ArrayBuffer 类型数据

    • @return { String } ArrayBuffer转16进度字符串示例

      */

      ab2hex(buffer) {

      const hexArr = Array.prototype.map.call(

      new Uint8Array(buffer),

      function(bit) {

      return ('00' + bit.toString(16)).slice(-2)

      }

      )

      return hexArr.join('')

      }

    2019-11-27 10:22

3***@qq.com

3***@qq.com

同问,请问解决了吗

太2真人

太2真人

同问,请问解决了吗,可以写入了吗

该问题目前已经被锁定, 无法添加新回复