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

bluetooth-gatt - 连接OBD设备时,setCharacteristicNotification和writeCharacteristic,onCharacteristicChanges收到3E 00 00 3F通知

当连接到 OBD 设备时,setCharacteristicNotification 和 writeCharacteristic。收到 onCharacteristicChanged 通知。但通知显示 3E 00 00 3F,许多写请求的条件相同。预计会返回有关设备的信息。

代码如下:

不知道如何得到正确的回应?我用 0D 发送了 AT 命令。谢谢你。

0 投票
1 回答
5073 浏览

android - 在后台扫描 Android 8+ 上的 BLE 设备

我正在使用 Android 8+ 上的 BLE 扫描仪 API 中的以下方法来扫描 BLE 信标

问题是,有时我可以看到扫描日志,但callbackIntent任何想法都没有提供任何信息,为什么会发生这种情况?

0 投票
1 回答
83 浏览

android - 无法使用蓝牙 LE 设备录制音频

我正在修补在android中创建一个录音机。我能够录制音频并播放。当连接标准蓝牙耳机(蓝牙 2.X)时,我什至可以录制音频。

但是,当我将 BLE 耳机(蓝牙 4.X)连接到我的手机时,我无法录制任何音频,我不知道为什么?

知道我错过了什么吗?

这是我的清单文件

0 投票
1 回答
399 浏览

react-native - 反应原生蓝牙应用当前时间服务

我需要开发一个连接蓝牙 BLE 设备的 ReactNative 应用程序。我正在使用 react-native-ble-plx 库。

要做的关键事情之一是在 ReactNative 应用程序和蓝牙设备之间同步当前时间。

我意识到该应用程序应该具有 CTS,即当前时间服务。如何实施 CTS 服务?有没有提供 CTS 服务的图书馆?

0 投票
2 回答
4149 浏览

bluetooth - [RPi3][Bluez] 已成功连接到 BLE 设备,但无法列出 GATT 属性

我正在做一个项目,我需要使用 C++ 代码在两个 Raspberry Pi 3 on stretch (RPi) 之间无线创建通信,并具有回调功能。第一个应该向第二个发送数据。我决定使用板载蓝牙芯片在两者之间建立蓝牙连接。

所以首先我决定从源代码版本 5.50 在两个 RPi 上编译 Linux Bluetooth Stack: Bluez。遵循本教程:https : //learn.adafruit.com/install-bluez-on-the-raspberry-pi/installation on Adafruit。我设法使用以下代码从一个 pi 向另一个 pi 发送消息:https ://people.csail.mit.edu/albert/bluez-intro/x502.html 。但是要读取客户端发送的消息,我必须调用函数“read(client, buf, sizeof(buf))”,如服务器代码所示,这有点限制。我想在收到消息时收到通知,以便可以调用回调函数。我看到可以通过启用有关用于通信的 GATT 特性的通知来完成。

我从https://people.csail.mit.edu/albert/bluez-intro/x502.html获得的 C++ 代码并没有真正显示这种级别的规范。在通过以下方式提高了我对 GATT 的了解后:https ://www.novelbits.io/bluetooth-gatt-services-characteristics/ ,我决定按照 Tony D 的 youtube 教程了解如何使用 Bluez APi https://www.youtube .com/watch?v=5fQR2PHMDWE

为了方便起见,我决定将一个 RPi 放在一边,并尝试连接一个使用蓝牙 4.0 的蓝牙音频耳机 JBL T450BT,因此它应该支持蓝牙低功耗。

在 bluetoothctl 上,这是问题所在,我设法打开控制器电源,扫描并检测耳机。然后我信任、配对和连接。在 GATT 菜单中,我输入命令:list-attributes [dev address]。Bluetoothctl 不打印任何错误但不返回任何内容,并准备接收其他命令行。

正如我告诉你的那样,从那里我没有得到 bluetoothctl 的答案,但也没有错误。我无法发现服务/特征。在我关注的 youtube tuto 上,有人告诉我 GATT 服务和特征发现是在配对/第一次连接期间完成的。我假设 Pi 打算这样做但失败了。这可能就是我得到序列的原因:已连接:是,ServicesResolved:是配对成功,然后是 ServicesResolved:否,已连接否。没有类似:[NEW] XXX 服务或 Characteristcs 显示。我认为问题不在于耳机,因为它在我连接的其他设备上做同样的事情。我在 RPi 上安装了 pulseaudio 和 bluealsa 软件包。

正如本教程中提到的

这里是蓝牙状态:

这是 hciconfig 给出的:

这也是 D-Bus 内省工具返回的内容:

对于在配对和连接方面遇到问题的人来说,这个来源是一个巨大的帮助:https ://www.sigmdel.ca/michel/ha/rpi/bluetooth_02_en.html

无论如何,这是我的问题。我想访问特性及其 UUID,以便能够修改他们的权限或创建具有适合我项目的自身特性的新服务。到目前为止,我认为这是在蓝牙通信中实现带有回调的通知器的唯一方法。也许我错了。你有什么线索吗?:)

0 投票
0 回答
1479 浏览

c# - 使用 GATT 从 C# 中的 BLE 设备获取通知不起作用

我正在开发一个应用程序来从带有 HM-10 模块的 Arduino 接收数据。我正在编写一个 WPF .NET 应用程序,同时使用 UWP 库连接到 BLE。我之前编写了一个程序来发送数据,并在 .NET 控制台应用程序中从 Arduino 发送数据,该程序运行良好,我可以向 Arduino 发送文本并接收回文本。当把它移到我原来的项目上时,它停止了工作。

没有给出错误代码,当我试图从我试图接收通知的特征订阅通知时,程序刚刚停止。

在上面的代码中,变量“readwrite”是我尝试从中获取通知的特征。控制台打印“尝试订阅”然后停止,没有错误代码。此代码在控制台应用程序中运行良好,只是在复制时不行。

这是完整的课程:

提前致谢。

编辑:

经过进一步测试,它似乎只能在控制台 .NET 应用程序中工作,而不能在 Windows 窗体应用程序或 .NET WPF 应用程序中工作。

0 投票
2 回答
879 浏览

android - 从 BLE 特征到字节数组的十六进制数据,如何转换为字符串

我的 BLE android 应用程序当前可以连接到我的 BLE 硬件并连接到 GATT 服务器。我还可以启用通知并读取特征。然而,所宣传的特征是 HEX 格式。在我的服务上,我尝试接收字符串或字节数组格式的数据,尝试了几个转换过程,但我仍然得到无意义的数据(即??x 等)

关于如何接收/转换十六进制数据的任何想法?服务:

主要活动:

NRF 连接中看到的来自 BLE 模块的数据:(0x)04-01-19-00-BE

0 投票
1 回答
1152 浏览

android - 写特征总是假的

现在我知道这个问题已经被问了十亿次了。

我已经阅读了其中的大部分内容(这个网站对我的问题没有太大帮助),我已经阅读了文档,并且我已经阅读了示例和教程。

我想做的是:

向 BLE 设备发送 hello world(连接到 arduino)

到目前为止我所做的:

使用内置设置与设备配对(我的应用程序中没有编程逻辑)

使用 GATT 服务器与设备连接。

但是,当我尝试编写特征时,相应的状态返回布尔值始终为 false。这是最相关的代码:

这些是我的权限:

这是相关代码的其余部分

我已经使用应用程序 BLEScanner 获得了 bUUID,它显示了一个用于读写的 UUID。我的应用程序的目标是反映该应用程序的功能,但我开始失去理智。我什至还不能发送一个简单的hello world。

Android Studio 输出:

客户端是一个简单的 HM-10 蓝牙模块,我现在想使用 ARDUINO IDE 将我在应用程序中发送的内容镜像到串行监视器上。

我希望我已经给了你所有的背景,因为我正在失去希望。我没有手动检查权限,因为我已经使用系统对话框设置了权限,但是,只有“位置”可以启用?这可能是我问题的根源吗?用 checkSelfPermission 检查蓝牙,蓝牙管理员返回 true,所以我不认为是这样:

0 投票
1 回答
166 浏览

ios - iOS CoreBluetooth 虚拟外设多重通知

我正在开发一个 iOS 应用程序,我需要将超过 20 个字节的数据发送到蓝牙 LE 中心。我已经设置了一个外设管理器,我一个接一个地发送每个 20 字节的“数据包”。我只在返回 true 时发送下一个数据包(如果返回 false,我会在调用peripheralManager.updatevalue后重试)。大多数情况下这是可行的,但是大约 20% 的时间发送的数据不正确。peripheralManagerIsReadyToUpdateSubscribersupdateValue

我有三个包。大多数情况下,中央接收 A 然后 B 然后 C,但有时中央接收 B 然后 B 然后再 C 或 A 然后 C 然后 C。

它总是发送三个通知,但是值不正确。

如果很重要:

特性的值存储在BLECharacteristic对象的实例中

当通知被“缓冲”后发送时peripheralManagerIsReadyToUpdateSubscribers,信息存储在一个DelayedNotification对象中。

创建对象时:

编辑:更多代码

0 投票
1 回答
510 浏览

bluetooth - How Mesh Provisioning Service and Mesh Proxy services are used in Provisioning and Message exchange in BLE mesh?

BLE mesh defined two services for legacy devices to communicate with Mesh network over GATT-bearer. Those are:

  • Mesh Provisioning service
  • Mesh Proxy service But, the spec says

A device may support the Mesh Provisioning Service or the Mesh Proxy Service or both. If both are supported, only one of these services shall be exposed in the GATT database at a time.

Why spec constrained on having a single service at a time in the GATT database?

How these two services are used while provisioning and after provisioning to exchange actual mesh message? Can anyone elaborate on this?