问题标签 [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 回答
426 浏览

c# - BLE ValueChanged 在 C# 应用程序中停止触发

我正在运行 Windows 版本 10.0.16299.0,并在 Visual Studio C# 2017 上构建。我可以从 Windows 窗体应用程序成功连接到未配对的 BLE 设备,并获取 ValueChanged 事件(每秒 1 个),但时间不长。我通常会在 40 秒或更短的时间内停止接收这些事件——通常更少。

我意识到这可能是一个处置/GC问题,但我不知道如何。设备、服务、特征和描述符都作为成员变量存储在主窗体中,不应被收集:

在我的示例中,我单击一个按钮来建立连接并订阅事件。在你说写描述符之前你不会这样做 - 我知道。该设备使用非标准描述符 ID,这就是我必须直接写入它们的原因。

请注意,一切正常,包括写入 - 我没有收到任何错误。只是在短时间内不再触发 ValueChanged 事件,我不知道我还必须“缓存”什么以防止对象被处置,假设这就是问题所在。

0 投票
0 回答
928 浏览

android - 蓝牙 BLE 连接到 Gatt 服务器并不总是工作

我有一个连接到配对设备的 Android 应用程序。问题是,如果我在应用程序启动之前没有启用这个设备,它永远不会工作。

唯一有效的情况是设备打开然后我启动应用程序。如果我启动应用程序并下一个设备,它永远不会连接。

这是代码:

0 投票
1 回答
361 浏览

c# - GattServiceProvider.StartAdvertising 失败:蓝牙设备问题?

我正在尝试按照本教程发布 GATT 服务器:

https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/gatt-server

代码在我的华硕 Zenbook 上与板载蓝牙 4.0 失败:

System.Runtime.InteropServices.COMException (0x8007013C):蓝牙设备不支持外围角色

这个电话证实了这一点:

BluetoothAdapter bta = 等待 BluetoothAdapter.GetDefaultAsync(); bta.IsPeripheralRoleSupported 设置为 false

您认为这是驱动程序问题、API 问题还是缺少硬件功能?

有人知道我可以使用新的 .Net API 管理的蓝牙 LE 加密狗吗?

我已经买了一个 Bluegiga BLE 加密狗,它似乎不兼容......

0 投票
1 回答
58 浏览

android - Android 设备无法与 BleGattServer 连接

我正在尝试运行以下两个 Google 示例项目:

1) BLE Gatt 服务器示例https://github.com/androidthings/sample-bluetooth-le-gattserver

2) BLE Gatt 客户端示例https://github.com/googlesamples/android-BluetoothLeGatt

我正在使用 2 部手机:

1)三星盖乐世 S5

2)摩托罗拉 G4 Plus

在添加了提供 BLE 和粗略位置访问权限的小代码片段后,这些项目与托管服务器的三星 Galaxy S5(即 github 项目 1)和运行 BLE Gatt 客户端的 Moto G4 Plus 一起工作。

但是,在颠倒角色时,即Samsung Galaxy S5运行客户端和Moto G4 Plus托管服务器,我无法成功连接。

我尝试在另一部手机(Moto G5)上运行客户端,但也失败了。

似乎Moto G4 Plus无法成功连接。

谁能建议为什么会发生这种情况?我需要处理任何特殊权限吗?

附加信息:尝试调试应用程序后,我发现在有问题的设备(即 Moto G4 Plus)上,调用 connectGatt 后,调用了 BluetoothGattCallback 但未调用 onConnectionStateChange()。

0 投票
0 回答
129 浏览

linux - Linux BLE Gatt 服务器程序在作为服务运行时无法检索 dbus org.bluez 对象

Linux BLE Gatt 服务器程序在作为服务运行时无法检索 dbus org.bluez 对象。当我以 root 身份使用终端运行程序时,程序运行良好,但当我尝试将程序作为服务运行时,程序会失败。

这是我的 systemd testproj.service 文件

以下是我对 dbus testproj.conf 内容的许可文件

以下是我对 dbus bluetooth.conf 内容的许可文件

0 投票
1 回答
386 浏览

android - Android:如何获取与 BLE 心率 GATT 服务的测量特征相关的时间戳?

我正在按照指南所说的那样做,一切都很好。我可以从 GATT 服务器中发现心率服务,然后从心率特征样本中获取所有更新。

但是,是否有一个特征可以获取与每个心率样本相关的时间戳?每当我获得样本时获取 System.currentMillis() 对我来说似乎太不准确了。我想要这样的东西

编辑:我指的是该行的示例

应用程序可以解析心率传感器接收到的数据。有没有办法将时间戳值与心率一起解析?我需要的结果是几个值,而不是单个听力速率。

(时间戳,心率)

0 投票
1 回答
306 浏览

android - Android 蓝牙广告 - 内部错误

我有一个 Android 设备广告作为蓝牙 LE GATT 服务器。有时(大约在 20% 的情况下)当我开始做广告时,它会因OnStartFailureCallback 给我错误 Code而失败internal error。有没有人遇到过这个问题并且有一些关于如何克服它的提示?有什么方法可以获取有关错误性质的更多信息,内部错误非常普遍?

关于我在做什么的更多信息:

  • 我同时运行两个不同的广告。第一个广告充当 iBeacon(使用 altbeacon 库实现)。
  • 第二个广告是一个可连接的广告,它也广告一个服务 UUID 和 2 个字节的广告数据。
  • 当我启动信标广告时有时会发生错误,有时当我启动其他广告时会发生错误
  • 我正在使用 Xamarin
0 投票
1 回答
1028 浏览

android - 相同类型的 BLE 设备的 MAC 地址是什么,在 android 中不同或相同?

我有一个带有 mac 地址的 BLE 设备88:5B:0F:07:E7:70(当我进入 android 应用程序时)。在我的应用程序中,我正在扫描具有特定类型的设备(在我的情况下是 BLE 锁),但环境中可以有多种类型的设备,但我只需要扫描锁。那么同一制造商的所有ble锁的mac地址是什么,它会相同88:5B:0F:07:E7:70或不同。不幸的是,我只有一个 BLE 锁,这就是我找不到解决方案的原因。如果有人可以帮助我解决这个问题,那将是不胜感激的。

0 投票
1 回答
744 浏览

android - 关闭蓝牙适配器不调用 onConnectionStateChange Android 8.1.0

在 Android 系统设置中关闭蓝牙会给我们BluetoothGattCallback.onConnectionStateChange()在 Android < 27 (Oreo) 中的调用。但是,当我在 Pixel 或 Nexus 5X (Android 8.1.0) 上尝试时,我没有收到该回调。蓝牙代码是否有一些变化,我们没有收到BluetoothProfile.STATE_DISCONNECTED蓝牙设置更改的通知。我注意到设备断开连接。此外,当关闭 BLE 设备时,回调会被调用。任何见解表示赞赏!

在此处作为问题归档Google 问题

0 投票
1 回答
453 浏览

android - 断开连接后收到 Android BLE 外围服务

我正在开发一个 android 应用程序,将树莓派连接到本地 wifi 网络,通过蓝牙从我的 android 手机向它们发送 ssid 和 ssid 密码信息。rpi 正在使用 bleno 运行节点服务器。

我的应用程序的设置如下。

  1. 我扫描显示设备清单供用户选择的 ble 设备
  2. 选择后,用户单击“下一步”按钮打开一个新的活动绑定到一个新的BluetoothLeService.
  3. 此活动有一个确认按钮,单击该按钮会启动 ble 外围设备与手机的连接过程。
  4. 将 ssid 和 ssid_pwd 数据发送到外围设备后,我会拆除并解除绑定BluetoothLeService,完成该活动,然后启动成功屏幕活动,将用户路由回扫描屏幕以重新开始该过程。

所以那部分一切都很好。我什至可以选择多个外围设备来发送两个数据,这很有效。

我的问题出现在第 4 步之后。如果用户在完成后决定选择另一个外围设备,onServiceConnected则会调用新外围设备,但mBluetoothGatt.discoverServices()似乎会选择两个服务。一次用于先前连接的外围设备,一次用于新的外围设备。

注意:这仅在我从服务中取消绑定然后稍后再次绑定时才会发生。绑定一次并使用两个外围设备似乎可行。

这可能是什么原因造成的?我已经检查了十多次BluetoothLeService被破坏的活动,绑定到的活动BluetoothLeService被破坏,甚至检查了第一个外围设备没有广播或接受 ble 连接。我什至已经从物理上拔掉了第一个 rpi。显示btsnoop_hci.log连接到一个外围设备,然后连接到另一个,因此它必须在应用程序代码中。有没有人有任何想法?

这是开始混乱的代码部分。

谢谢