首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >蓝牙数据更新通知未被解雇

蓝牙数据更新通知未被解雇
EN

Stack Overflow用户
提问于 2017-06-22 14:37:46
回答 2查看 634关注 0票数 5

在从蓝牙外设读取数据时,我面临着一些问题。我们有一个蓝牙设备,有以下关贸总协定的细节。

代码语言:javascript
代码运行次数:0
运行
复制
<service uuid="service id" advertise="true">
    <description>XXXX service</description>
    <characteristic uuid="characteristic id" id="xgatt_data">
        <description>Data</description>
        <properties write="true" indicate="true" />
        <value variable_length="true" length="20" type="user" />
    </characteristic>
</service>

我所做的是

  • 搜索具有“服务id”的外围设备。
  • 一旦找到外设,就连接到外设,并保持对它的强烈引用。
  • 连接设置委托并搜索它提供的所有服务之后
  • 循环所有服务并在发现服务后扫描特征
  • 在找到所需的特性后,我将启用通知。
  • 按一下按钮,我正在写数据到特性。

我能连接到这个设备。我也可以向外设发送命令(数据)。一旦我们向设备发送任何命令,它就会发送一些数据作为响应。我可以在设备上看到日志,一旦收到任何命令,它就会将一些数据发回。但是在我的iOS设备中,我无法使用通知或普通读取函数读取数据。我在这里错过了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-04 04:37:04

我发现了问题。实际上,问题在于模拟器。现在我可以获得数据更新指示,并能够用“读”和“指示”属性将数据写入BLE。

票数 0
EN

Stack Overflow用户

发布于 2017-07-03 13:17:31

通知和指示是两件不同的事情:如果启用指示,您将不会接收通知,如果启用指示,则发送指示的应用程序希望对每个发送的indiciation (来自应用层)作出响应。

另外,您的权限似乎不太正确: xgatt_data特性不一定需要“写”权限,除非您打算让客户端更改它的。如果要从通知中读取数据,则需要“读取”权限,而不仅仅是被通知已收到数据。

要启用通知,需要一个客户端特征配置描述符 (UUID 00002901-.)在xgatt_data特征范围内。这个CCCD需要"Read+Write“权限来启用通知/指示(有些没有读取权限,有些没有)。

最后,确保您的设备不同意小于通知大小的属性MTU,如果它不适合于单个包,它将不会被外围设备接收。如果使用了数据长度扩展,则在DLE协商之后才启用通知,或者将通知值大小保持在设备最初的最小属性MTU以下。

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

https://stackoverflow.com/questions/44702529

复制
相关文章

相似问题

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