首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bleno在二进制数据上抛出索引超出范围的错误

Bleno在二进制数据上抛出索引超出范围的错误
EN

Stack Overflow用户
提问于 2019-04-25 09:26:22
回答 1查看 167关注 0票数 0

我的代码提供了一个BLE服务,在nodejs下运行,并使用bleno包。

我的服务特性支持readnotify

下面是我的onSubscribe函数的简化实现:

代码语言:javascript
复制
function(maxValueSize, updateValueCallback) {
  var a = buildPacket();
  var buf = Buffer.from(a);
  console.log('Buffer: ', buf);
  updateValueCallback(this.RESULT_SUCCESS, buf);
}

函数buildPacket返回一个20字节的Uint8Array。控制台语句显示缓冲区为20字节,并且具有预期值。

但是,调用updateValueCallback会抛出一个错误:

代码语言:javascript
复制
RangeError: Index out of range
at checkInt (buffer.js:1187:11)
at Buffer.writeUInt8 (buffer.js:1233:5)
at Gatt.<anonymous> (/home/pi/Dev/MyTest/node_modules/bleno/lib/hci socket/gatt.js:881:33)

以下是来自gatt.js的相关代码:

代码语言:javascript
复制
878  if (useNotify) { 
879     var notifyMessage = new Buffer(3 + dataLength);
880
881     notifyMessage.writeUInt8(ATT_OP_HANDLE_NOTIFY, 0);
882     notifyMessage.writeUInt16LE(valueHandle, 1);

我有没有遗漏什么步骤?

我在bleno上读到的大多数示例似乎都发送字符串数据。但是,我需要发送二进制数据。发送二进制数据有什么特殊要求吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-25 16:02:49

原来updateValueCallback只有一个参数。我应该更仔细地看一下bleno示例:-(。

只需将buf作为唯一参数传递即可解决此问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55840588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档