问题标签 [bluetooth-gatt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3297 浏览

android - BLE readCharacteristics 总是返回 false,或者 getvalue 为 null

我正在尝试在具有以下字段的设备中使用 Android 中的 BLE:电池 (RO)、状态 (RO)、强度 (R/W)。我遵循了一些关于使用设备设置 Gatt 的教程。我使用以下代码:

所以我尝试发现服务,如果完成了对它们的迭代,以及它们的特征。如果他们的 UUID 正确,我将它们添加到 mCharacteristics。如果这是一个可读的值(这里是每个人),我启用通知。

完成后,我尝试进行第一次阅读:

我必须明确指出,所有这些都在一个专用线程中,并保存在一个 Android 服务中。我确定设备已连接,并且特性也已连接。对于每一个我验证了(属性和可重复)的值,始终 > 0 ...但是永远不会调用 onCharacteristicRead(),并且 getValue() 方法返回 null。

我在 Android 中使用 BLE 比较新。

有人对这个问题有想法吗?提前致谢 !

编辑:我终于找到了解决方案,但没有像我预期的那样......事实上,如果我将通知设置为启用,之后我将无法读取特征..​​....有人可以告诉我如何以这种方式执行:

0 投票
0 回答
198 浏览

android - 如何测试 GATT 服务器连接是否关闭

我有一个应用程序托管在我的手机上,它连接到托管在 BLE 设备上的 GATT 服务器。这是我将应用程序连接到 BLE 设备的方法。

现在我有一个 gatt 服务器对象,我不能使用它的服务向它写入和读取数据。

现在说三种可能的事情之一可能发生

  • 我的手机超出范围
  • 我禁用了我的蓝牙
  • BLE 设备已关闭

如何测试 gatt 连接是否已以这些任意方式之一关闭?例如,一些返回布尔值的方法会很好

0 投票
0 回答
989 浏览

android - GATT 内部错误 129

我正在使用 Marshmallow 设备开发我的 BLE 应用程序。很多时候我在 onServicesDiscovered() 方法中得到状态码 129。我已经在 3 种不同的设备上进行了测试,在所有设备中我发现了同样的问题。这是一个随机问题。我搜索了很多论坛,但还没有找到任何解决方案。

以下是我尝试过的事情: 1. 使用反射刷新 Gatt 缓存。2.重新安装应用程序。3.取消配对BLE设备。4.打开/关闭蓝牙和wifi。只有重新启动手机才能解决此问题。但是如果应用程序无法连接到 BLE 设备,我不能要求用户重新启动手机。

这个问题的根本原因是什么?有什么解决方案吗?

我也为此检查了 Android 开源代码。我找到了状态代码的以下 URL

请任何人为此提供一些提示或解决方案。

0 投票
0 回答
203 浏览

android - 我如何在 android 中更改 BLE GATT 配置文件

谢谢阅读

我在 android 和 ble 中启动

只是我想修改 BLE 的 GATT 配置文件,例如)UUID、Major、Minor 等。

我找到两个文档 https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html https://developer.android.com/reference/android/bluetooth/BluetoothGattCharacteristic.html

使用这两个文档,我可以修改 Gatt 配置文件以使用 BluetoothGatt(它是一个类)的 writeCharacteristic(BluetoothGattCharacteristic 特性)(这是方法)吗?

在 BluetoothGattCharacteristic 类中,它使用 UUID 但没有参考主要和次要。

请给我一些答案。

0 投票
1 回答
1801 浏览

c# - 为什么设置 Gatt 特性的值已更改时值不在预期范围内

我想通过在 Visual Studio 2017 中使用通用 Windows 平台 C# 中的 ValueChanged 回调,继续从我的 BLE 4.0 设备中读取特征/设置值更改的事件处理程序。

我遵循了这些站点的一些教程:Damian Blog 的 Windows Universal with BLEBluetooth Gatt 的 Git HubBluetooth Generic Attribute Profile - Heart Rate ServiceDr. Jukka 的 BLE 移动博客。他们所有人都在使用 ValueChanged,我试图遵循他们的做法。

不幸的是,我在使用 ValueChanged 回调时收到以下错误,而不是触发 ValueChanged。

这行代码正在产生错误:

这是我的源代码的更多详细信息:

注意:我为我的加密狗使用 COM 7,我的程序可以发现 BLE 的设备名称,并且可以发现服务和特征的 Uuid。

更新 1 我尝试在设置值更改事件处理程序之前检查特性属性,方法是按照rudi belt 在 SO 上给出的答案

不幸的是,这个 IF 语句没有被执行。

更新 2 我试图删除Oncharacteristic_ValueChanged方法中的所有代码。但它仍然给我同样的错误

我花了很多时间试图解决这个问题。如果有人可以帮助我,我将非常高兴。谢谢!

0 投票
1 回答
577 浏览

notifications - 低功耗蓝牙通知特性

我只是想弄清楚。如果我有 BLE(cc2541) 和 android APP。BLE具有通知、读取、写入等特性。我可以从 BLE 向通知特征写入值,用 android APP 读取它,然后从 android APP 向 BLE 写入相同的通知特征吗?

0 投票
2 回答
2839 浏览

android - Android BLE GATT 断开与设备断开

我正在开发一个与自定义蓝牙设备通信的 Android 应用程序。调用后,BluetoothGatt.Disconnect()我看到调用了OnConnectionStateChange回调,并且新状态为Disconnected,但是,在发生这种情况与设备本身实际断开连接之间似乎存在延迟。例如,如果我使用已连接的设备调用 BluetoothManager.GetConnectionState(...),它仍会返回 Connected。有时需要几秒钟才能GetConnectionState返回Disconnected. 这是正常的吗?我是否有可能在我的应用程序中做错了可能导致这种情况的事情?例如与非 UI 踏板断开连接,或类似的东西?或者,物理蓝牙设备本身是否有可能没有正确处理断开连接并且可能没有及时完成断开连接事件?

0 投票
1 回答
1801 浏览

bluetooth - 何时/如何在物理层发送 BLE GATT 通知/指示

我阅读了蓝牙核心规范。V4.2 /BLE (..)

连接状态下的通信始终 由主机发起,从机返回数据。这里的 master 是一个 GATT 客户端,它与 GATT 服务器(外围设备)通信。

当主设备在发送数据之前总是需要请求时,我不了解 GATT 功能“通知”它是如何通过较低层工作的。

有人知道它是如何工作的吗?

0 投票
4 回答
17482 浏览

android - Android BLE Gatt 连接更改状态

我有一个 android 应用程序可以连接到 BLE 设备并写入它。我可以成功连接、读取和写入它。作为测试的一部分,我们正在尝试不同的断开连接场景。

有时,如果 BLE 设备断开连接,我将连接更改为断开状态,状态值为 19。此外,如果有任何绑定错误,状态等于 22。如果我以编程方式断开连接,此状态给我 0。但没有android 文档中指定了除 0 之外的这些状态。

发布示例 BluetoothGattCallback

有没有人面临同样的问题并整理出状态列表。我需要知道 onConnectionStateChange 方法中状态变量的可能值

0 投票
1 回答
1719 浏览

android - Android BLE:成功将 ENABLE_NOTIFICATION_VALUE 值写入 BluetoothGattDescriptor 但 onCharacteristicChanged 永远不会触发

我有一个 BLE 外围设备,可以在 iOS 和 Android 7.0 上与给定的服务/特征 UUID 一起正常工作。在 Android 6.0 Marshmallow 上,即使在描述符上设置了 ENABLE_NOTIFICATION_VALUE,onCharacteristicChanged 方法也不会触发。请帮我弄清楚如何让 onCharacteristicChanged 为运行 Android OS 6.0 Marshmallow 的 Android 设备触发。这是我用来尝试让通知工作的代码:

在上面的代码中,setCharacteristicNotification 和 writeDescriptor 调用都返回成功(1 / true / 等)。此外,onDescriptorWrite 回调返回 GATT_SUCCESS。但是,当我们稍后在代码中读取描述符时,会发现通知值仍然设置为禁用。我们尝试了许多解决方案,例如在 setCharacteristicNotification 和 writeDescriptor 调用之间设置延迟,但尚未找到解决此问题的方法。与相关外围设备配对没有问题,但获取通知似乎是不可能的。任何提示将不胜感激。