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

bluetooth-lowenergy - BLE 操纵杆/游戏手柄 - Windows joy.cpl 小程序中的自定义设备名称

HID over GATT (HOGP) 游戏手柄在 Windows 10 游戏设备小程序 (joy.cpl) 中显示为“8 轴 32 按钮设备”。该设备在设备信息服务 (0x180a) 下设置了以下 GATT 特性:

  1. 即插即用 ID (0x2a50)
  2. 设备名称 (0x2a00)
  3. 型号名称 (0x2a24)

PnP ID 设置为标识源 2 (USB),VID/PID 组合是唯一的。

我需要设备以与 USB HID 设备相同的方式显示为“自定义名称”。我尝试为设备信息服务(例如制造商名称)设置其他可选特性,但没有达到预期的效果。

有关如何设置设备以使 Windows 10 正确显示该设备的自定义名称的任何建议?

PS:我不想制作自定义驱动程序,在 HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM 下编辑注册表或为设备提供 INF 文件。

0 投票
1 回答
1021 浏览

java - BLE设备与同一设备上不同Android应用程序之间的通信

我是 Android BLE 的新手,所以我的问题在某种程度上可能不正确或幼稚。如果是这种情况,请向我解释我错在哪里,并请告诉我管理这种情况的正确方法。

场景如下:我的 Android 应用程序与 BLE 设备通信,发送命令并使用 BLE 特性从设备获取答案。

顺序是:

  • 设备唤醒应用(onConnectionStateChange方法被调用)
  • 我的应用程序在特征中写入命令(我writeCharacteristic称将命令放入value参数中)。
  • 设备将命令的答案发送回我的应用程序(该onCharacteristicChanged方法被触发并且value参数包含答案)

唤醒应用程序后,设备不会执行任何操作,直到通过writeCharacteristic. 设备接受不同的命令。

到目前为止一切都很好,但最近我开发了第二个不同的应用程序来与同一设备通信。

当我在同一部 Android 手机上运行这两个应用程序时,一个应用程序向设备发送命令,两个应用程序都会收到响应!当然,未发送命令的应用程序会收到意外的答案并进入意外状态。

好的,知道问题我可以修改我的两个应用程序来处理这种情况,但问题是:当同一设备中的两个应用程序与同一 BLE 设备通信时,这种行为是否正常?

有没有办法让应用程序与 BLE 设备建立通信通道,以避免向除发送请求的应用程序之外的任何其他应用程序发送特定命令的响应?

我的猜测是,这writeCharacteristic不是onNotificationChanged这种通信的正确功能,但在这种情况下,哪些是替代方案?

0 投票
1 回答
606 浏览

android - BLE 读取 RSSI 值不可靠

我正在尝试正确读取我连接的 BLE 设备的 RSSI,以便将其发送到上游服务器。

我发现返回的RSSIBluetoothGatt.readRemoteRssi()有很多“跳跃”。我开始做一个运行平均值(过去 10 秒)以获得更平滑的值。这没有帮助,因为该值有很多尖峰。

我发现这样做mBluetoothAdapter.startLeScan(null);会使值更平滑。我知道官方文档不鼓励在连接到设备时进行扫描,但实际上 - 在 LG 和三星设备上它确实有效。

进一步 - 如果我null作为回调传递,这个方法应该什么都不做(参见https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core/java/android/bluetooth/BluetoothAdapter.java#L2833)。这让我相信三星和 LG 确实对 Android 蓝牙堆栈进行了很多修改。

谁能解释我看到了什么?谁能提供更好的解决方案来读取“真实”RSSI 值?


编辑:

我发现它onCharasteristicWritten()被调用了几次(?)具有相同的值,即使硬件只发送一次。我们现在正在手动过滤这些值。也onRssiRead()被叫了好几次。

可能是 Android 文档建议在连接到 BT 设备时不进行扫描的原因。

0 投票
2 回答
83 浏览

android - 在特定时间调用特定功能的最佳方法,作业调度程序或警报管理器

我正在与硬件通信蓝牙设备。我想在特定时间将数据发送到蓝牙模块,这是安排通话功能的最佳方法,我应该使用警报管理器或作业调度程序。

0 投票
1 回答
75 浏览

bluetooth - UWP 如何检查来自 BLE 设备的传入请求?

如何检查从配对 BLE 设备到当前设备的所有传入请求?

我认为事件是可能的,也许 UWP 有针事件,或者我必须实现自定义事件,但是正确的方法在哪里?

微软有关于GATT Server的解释,我认为这不是我需要的,因为我不需要具有服务和特性的服务器,我只需要检查传入的请求并解析我的应用程序中传递的数据。

0 投票
0 回答
119 浏览

c++ - 有什么方法可以直接在蓝牙设备上写(来自 C++/Qt)?

我已经阅读了 Qt 5.10 蓝牙文档的某些部分,并按照扫描教程来发现我的设备的服务、特征和描述符。

它工作得很好,但我需要在每次交互之间等待几秒钟(例如,进入服务以列出每个特征)。

我的问题是,我可以直接访问描述符或特征来直接写入/读取数据吗?如何 ?

我有静态地址,我将始终在每个蓝牙设备上使用它们。我只需要使用 Service/Characteristic/Descriptor 组合来编写。在 Ionic 上,我正在使用Cordova BluetoothLE 插件进行操作,并且效果很好。

谁能帮我 ?非常感谢 !

0 投票
0 回答
1563 浏览

python - Python Bluez GATT 服务器 - 客户端无法断开连接

我一直在开发一个在 Raspberry pi 3 模型 B 上运行的简单蓝牙 GATT 服务器应用程序。这个应用程序使用 Bluez(版本 5.49)来宣传服务和特性。该应用程序基于以下示例:https ://github.com/Jumperr-labs/python-gatt-server

到目前为止,我几乎已经结束了服务器:客户端可以在特性和服务中进行读写。当客户端尝试断开与服务器的连接时,就会出现问题。服务器似乎拒绝断开连接,因此客户端无法断开连接。可以断开客户端的唯一方法是关闭服务器或禁用客户端上的蓝牙适配器。

客户端是使用以下蓝牙库的 Xamarin 应用程序:https ://github.com/aritchie/bluetoothle 。客户端问题已被丢弃,因为该问题也出现在 LightBlue 等蓝牙文件测试应用程序的测试中(https://itunes.apple.com/us/app/lightblue-explorer/id557428110?mt=8)。

基本 GATT 服务器如下:

在广告中:

在 gatt_server 中:

(...) 服务和特性实现 (...)

最后在适配器中:

任何建议都被接受。我已经处理这个错误几个星期了,我感到很沮丧

0 投票
1 回答
703 浏览

bluetooth-lowenergy - 蓝牙 LE Gatt 服务器特征值在 Tizen 3.0.0.2 上始终为 NULL

我目前正在做一个使用三星 Galaxy Gear S3 作为蓝牙低功耗服务器来构建客户服务的项目。问题是在我构建了特征和描述符,将它们添加到另一个和服务,将服务注册到服务器并启动服务器之后,我 iPhone 上的 BlueScanner 应用程序只是显示我的特征和描述符没有价值,但是有uuid。这是我的代码:

提前致谢!

0 投票
2 回答
228 浏览

android - 通过 BLE 的音乐播放器

我正在构建一个由通过 BLE 接收的消息控制的 Android 音乐播放器。我的应用程序在 API 4.4(18) 上运行良好,但它在 8.1(27) 中崩溃可能是由于线程处理不当。这是我的扫描活动和音乐播放器活动以及来自 LogCat 的错误

扫描活动

音乐播放器:

}

和日志猫:

I/WindowManager: WIN DEATH: Window{9297a52 u0 com.example.parlatas.messages/com.example.parlatas.messages.MainActivity} I/ActivityManager: 进程 com.example.parlatas.messages (pid 8530) 已经死亡:前 TOP W/ActivityManager:强制删除 ActivityRecord{b15576d u0 com.example.parlatas.messages/.MusicPlayer t245}:应用程序死机,没有保存状态 W/InputDispatcher:通道 'd7b3552 com.example.parlatas.messages/com.example.parlatas。 messages.MusicPlayer (server)' ~ 消费者关闭输入通道或发生错误。events=0x9 E/InputDispatcher: channel 'd7b3552 com.example.parlatas.messages/com.example.parlatas.messages.MusicPlayer (server)' ~ 频道已不可恢复地损坏,将被处置!I/WindowManager: WIN DEATH: Window{d7b3552 u0 com.example.parlatas.messages/com.example.parlatas.messages.MusicPlayer} W/InputDispatcher:

我有单独的类,其中包含 BLE 常量和由扫描活动(主活动)填充的蓝牙设备列表

0 投票
1 回答
681 浏览

raspberry-pi3 - BLE gatttool 从 bluno 读取串行数据?

我正在尝试通过 BLE 从 Bluno 向 Raspberry Pi (Raspian) bluez 5.50 发送数据。

虽然连接似乎很好。我很震惊,无法从通知句柄中检索串行数据。

以下是我尝试过的。

所以这里的问题是,通知句柄侦听器“侦听”串行数据,并每 1 秒从 Bluno(如 Adurinosketch 中编程)返回值(2 -> Hex:32)。

但是,当我尝试通过命令 char-read(通过句柄和 uuid 尝试)检索此值时,它总是返回 01 ?!!!

最终我想在我的 Python 代码中检索这个值(我为此使用 Pexpect)

任何帮助/方向表示赞赏。