问题标签 [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 投票
0 回答
579 浏览

android - 更改 gatt 断开连接超时

我想知道是否有办法将 gatt ble 设备断开超时更改为更快的值。当前超时使超时检测大约在 20 秒左右。

下面的代码是从超时触发的。

我确实使用信号强度来检测断开连接,因为信号强度在一秒钟内永远不会是相同的值,虽然它是可靠的,但重新连接到设备是随机的,因为它仍然会影响 gatt 超时,即使服务处理重新启动连接。

如果 gatt 超时已更改,则可以在我这边没有代码的情况下使用重新连接功能,但是由于我这边有代码重新连接到它,所以它有更多错误。

0 投票
4 回答
29016 浏览

linux - C 语言中的低功耗蓝牙 - 使用 Bluez 创建 GATT 服务器

我正在尝试在我的 Linux 机器上使用 GATT 来设置具有大量特征的自定义服务。

使用这个问题及其链接的问题,我能够识别出我需要编写的代码(利用该gatt_service_add()函数)。

我创建了一个名为 gatt_service.c 的单独文件,并编写了我认为需要的代码。但是,我无法弄清楚如何将我的代码链接到 Bluez 库以编译和运行我的解决方案。例如,这个站点(虽然不是用于 BLE 开发)链接到 libbluetooth 使用-lbluetooth作为 gcc 参数,我无法确定链接到什么来使我的代码工作。

我没有发布任何示例,因为我不确定要发布什么 - 如果有任何需要,或者我没有提及某些内容,请告诉我。

提前致谢。

编辑 - 更多信息:

在评论之后,我使用插件/时间作为基础来为我自己的“广播服务”编写我自己的文件。完整代码位于:here(我不知道要在答案中输入哪一点代码!)。

我的编译命令是:(包括修复此处gcc gatt_broadcaster_service.c -Wall -o gatt_broadcaster_service -lbluetooth 'pkg-config --cflags --libs glib-2.0' -I/home/alexander/Documents/bluez-5.29/lib报告的问题的 glib 位)。

我得到的错误是:gatt_broadcaster_service.c:11:27: fatal error: lib/bluetooth.h: No such file or directory #include "lib/bluetooth.h"

我的 C 文件存储在 Documents 中,我的研究告诉我它找不到 lib/bluetooth.h,因为它没有找到正确的位置(这个这个讨论在文件不存在时为编译器使用包含标志在一般位置,但我无法做到这一点。

再次感谢!

0 投票
1 回答
1439 浏览

android - 无法在 Android 5 和 BLE 设备之间建立 BLE 连接

我坚持在 Android Lollipop 智能手机和 BLE 设备(带 BLE 模块的 TI 实验板)之间实现连接。我使用以下调用进行连接:

我已经设法为 Android 4.3 和 4.4 建立连接,但是当我对 Android 5 使用相同的代码时,我收到以下错误BluetoothGattCallback::onConnectionStateChange

错误代码的133意思GATT_ERROR

我尝试使用我自己的应用程序、谷歌示例和来自 Play Market 的 BLE 扫描仪应用程序,但它们都无法连接到设备。我还尝试了几部 Android 5 智能手机,但都没有成功。

但是,我有另一个设备(TI 无线连接开发套件),我可以在它与 Android 5 智能手机之间建立连接。所以这个问题与 Android 5 和我的特定设备有关。我想知道如何解决它,或者至少如何调试这种错误以找出根本原因。

PS我也尝试了@nayoso here提出的方法,但它也没有帮助。

0 投票
2 回答
830 浏览

ios - 从 Windows PC 到 ios 设备的 Bluegiga BLE112 数据传输

是否可以从 windows pc 到 ios 设备进行数据传输(小于 1mb 数据)?

我正在寻找一种通过蓝牙 LE 将数据从 Windows 机器传输到 ios 设备的解决方案,发现 bluegiga BLE112 是一个不错的选择,但我不确定是否可以将非 GATT 配置文件的数据从 .net 应用程序发送到ios应用程序。

有可能吗?

0 投票
1 回答
480 浏览

android - BluetoothGatt 显示 10,000 个相同的服务特征

我遇到了一个让我完全摸不着头脑的问题,主要是因为它的持久性。

我正在编写一个小型 Android 应用程序来与我的 Bluegiga BLE113 进行通信。我以前连接过这个设备,但我最近做了一个 GATT 修改,它没有反映在 Android 设备上(在我尝试过的任何应用程序中 - 我从桌面和 iOS 应用程序验证我的 GATT 已更新正如预期的那样)。

我尝试关闭/打开蓝牙并重新启动我的 Nexus 7,但仍然没有。最后,我绝望了,尝试了这里提到的解决方案:https ://stackoverflow.com/a/22709467/992509 ,它使用反射来命中一个名为刷新的私有 BluetoothGatt 方法。

它似乎工作得很好,因为我的新服务出现了,但是,我遇到的是我的服务(只有 1 个特征)显示了数百个具有相同 UUID 的特征。每次我运行我的应用程序时,相同特征的数量都会增加,甚至通过设备重启和 BT 循环。

最后,我绝望了,对我的 Nexus 进行了恢复出厂设置(这是一个测试设备,所以我不在乎)。没有解决问题,这张图片显示了我所看到的(10k 特征):

具有 10k 特性的 BluetoothGatt

我的 BLE113 GATT 看起来像这样:

Android 代码基本上只是一个 BluetoothGatt.discoverServices() (这是我第一次看到这种情况发生)。

再一次,我尝试过重置 BT,重启我的 Nexus,然后恢复出厂设置。此外,我已确认我的 BLE 外围设备通过桌面应用程序和 iOS 完全按预期工作。

我在 Nexus 7 上,运行 5.0.2,并在我的应用程序中定位 4.4。

0 投票
1 回答
9455 浏览

android - 如何创建 Android BLE 外围设备?

我尝试制作两个蓝牙 BLE 应用程序:

  • 一个核心角色
  • 一外围

但是我发现了一些问题,我的应用程序崩溃了。

这是我遵循的步骤:

1-客户端设置描述符

2 - onDescriptorWriteRequest 中的服务器设置

3 - 客户收到此通知,我已经这样做了:

4 - 服务器在 onCharacteristicWriteRequest 中接收到这个,我已经这样做了:

5- 在客户端将调用 notifyCharacteristicChanged,我们将返回步骤 3

但遗憾的是,通讯在几条消息后自动关闭。

  • 客户端启用描述符
  • 服务器向客户端发送通知
  • 客户端读取新特征并重新写入服务器
  • 服务器重新向客户端发送通知
  • 客户端读取向客户端发送消息
  • 消息没有到达...

通过日志,我看到 onCharacteristicWrite 的函数在整个应用程序生命周期中只被调用一次。在没有以状态 133 到达的消息之后被调用,但我不明白为什么它没有在其他消息之后被调用。

中心角色的日志:

外设日志:

编辑:我已经清理了先例消息,并添加了您的所有建议/建议 :)

编辑 2:外围设备仍然存在,但已断开连接。如果我重新连接连接重新启动,并重做上述相同的步骤:(

EDIT3:在我以这种方式设置的外围设备上:

EDIT5:我解决了我的问题。在 peripherall 内部的 OnCharacteristicWriteRequest 内部存在错误。该应用程序仍在运行,但连接崩溃了。:)

EDIT6:如何检索我的外围设备的真实 MAC 地址?因为在客户端,当我使用“getAddress()”时,每次外围设备重新启动时 MAC 地址都会更改

0 投票
1 回答
651 浏览

bluetooth-lowenergy - BLE 应用的 GATT 服务/特征结构

我正在构建一个应用程序,其中智能手机需要通过低功耗蓝牙与外围设备进行通信,但我很难为这种通信提出正确的 GATT 服务/特征结构。电话和外围设备需要通过包含多个发送/接收消息的“自定义协议”相互通信。我的意思是他的电话会向外围设备发送一些东西(协议的第 1 步),外围设备会通过向电话发送消息来响应这个(协议的第 2 步),它会通过发送来响应这个到外围设备的下一条消息(协议的第 3 步)等,直到协议完成(假设 10 步之后)。

我是否应该为要执行的协议的每个步骤创建一个新属性,即让手机写入属性“protocol1”并让外围设备用属性“protocol2”通知手机,然后手机写入“protocol3”,等等。或者我应该只使用两个属性:一个用于手机写入(TX),另一个用于手机通过通知读取(RX)?似乎 BLE(而不是蓝牙 3.0)并不是真正为这种 RX/TX 通信而设计的,还是我错了?

0 投票
0 回答
1276 浏览

node.js - 从蓝牙血压计 U80IH 读取数据

我有一个蓝牙血压计U80IH,并试图了解如何使用 GATT 接口使用高贵的 npm 模块从该设备读取数据。

我运行scaninfo使用命令cylon-ble并得到了这个结果....

卖方/制造商未提供此设备的 GATT 规范。

试图看看是否有人可以进行逆向工程并找到开始测量过程和读取数据的方法。

须藤节点模块/.bin/cylon-ble-info 8cde5263626e

0 投票
2 回答
1519 浏览

android - Android BluetoothGATT discoverServices() 提供了很多服务

像这样连接到特定的 ScanResult 后

我调用 AndroidsBluetoothGatt.discoverServices()方法并在BluetoothGattCallback.onServicesDiscovered()我调用getServices().BluetoothGatt

当我列出服务和相关特征时,我得到了更多我所期望的。在 iPad 上用 LightBlue 模拟的这个 Peripheral 上应该是 1 个具有 1 个特性的服务,但是还有更多的服务.. 看看我的日志:

MyBluetoothGattCallback﹕ service: 00001800-0000-1000-8000-00805f9b34fb MyBluetoothGattCallback﹕ characteristic: 00002a00-0000-1000-8000-00805f9b34fb MyBluetoothGattCallback﹕ characteristic: 00002a01-0000-1000-8000-00805f9b34fb MyBluetoothGattCallback﹕ service: 00001801-0000-1000-8000 -00805f9b34fb MyBluetoothGattCallback﹕ characteristic: 00002a05-0000-1000-8000-00805f9b34fb MyBluetoothGattCallback﹕ service: d0611e78-bbb4-4591-a5f8-487910ae4366 MyBluetoothGattCallback﹕ characteristic: 8667556c-9a37-4c91-84ed-54ee27d90049 MyBluetoothGattCallback﹕ service: 7905f431-b5ce-4e99 -a40f-4b1e122d00d0 MyBluetoothGattCallback﹕特征:69d1d8f3-45e1-49a8-9821-9bbdfdaad9d9 MyBluetoothGattCallback﹕特征:9fbf120d-6301-42d9-8c58-25e699a21dbd MyBluetoothGattCallback﹕特征:22eac6e9-24d6-4bb5-be44-b36ace7c7bfb MyBluetoothGattCallback﹕ service: 0000180f-0000-1000-8000-00805f9b34fb MyBluetoothGattCallback﹕ characteristic: 00002a19-0000-1000-8000-00805f9b34fb MyBluetoothGattCallback﹕ service: 00001805-0000-1000-8000-00805f9b34fb MyBluetoothGattCallback﹕ characteristic: 00002a2b-0000-1000-8000-00805f9b34fb MyBluetoothGattCallback﹕ characteristic: 00002a0f-0000-1000-8000-00805f9b34fb MyBluetoothGattCallback﹕ service: 89d3502b-0f36-433a-8ef4-c502ad55f8dc MyBluetoothGattCallback﹕ characteristic: 9b3c81d8-57b1-4a8a-b8df-0e56f7ca51c2 MyBluetoothGattCallback:特征:2f7cabce-808d-411f-9a0c-bb92ba96c102 MyBluetoothGattCallback:特征:c6b2f38c-23ab-46d8-a6ab-a3a870bbd5d7 MyBluetoothGattCallback:服务:00001111-0000-1000-8000b:MyBluetoothGattfCallback934:-008000002222-0000-1000-8000-00805f9b34fb

有人能解释一下为什么我在那里得到这么多服务吗?有缓存吗?

0 投票
2 回答
14104 浏览

android - 蓝牙 Gatt 回调不适用于 Lollipop 的新 API

我目前有一种方法可以写入 BLE 设备以发出哔哔声。我的蓝牙回调如下:

我的 ReadCharacteristic 实现如下:

这种当前方法对于运行 KitKat 及更低版本的设备非常有效。但是当我在 Lollipop 上运行相同的功能时,它会发出几次哔哔声,然后停止工作。从那时起,每当我尝试连接时,它都会说设备已断开连接,并在 OnConnectionStateChanged 方法中给我一个错误代码 257。

每当我调用此方法时,我也会收到此错误-

有没有人遇到过同样的问题?当我尝试调试时,我从未遇到过对象为空。