问题标签 [gattlib]

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 回答
50 浏览

python - Python gattlib 和 OpenCV 之间是否存在冲突?

我想创建一个 Python 程序,使用 OpenCV 打开网络摄像头,并在 Raspberry Pi 上使用 gattlib 控制蓝牙设备。这是代码:

奇怪的是它会阻塞线程key = cv2.waitKey(1) & 0xFF

在此处输入图像描述

如果我删除from gattlib import GATTRequester,代码可以正常工作。

有人知道这里发生了什么吗?

谢谢!

0 投票
3 回答
1926 浏览

python - 无法安装`gattlib`

我正在尝试gattlib在 Python 中安装以使用它的一些蓝牙工具。

操作系统是 ubuntu 18.04.4 LTS。

我现在已经尝试了以下方法(例如这里):

这给出了(我的 Python 是 3.6.9):

另外,我试过:

这使:

尽管 libboost-python 和 libboost-thread 在第一次尝试中成功安装(见上文),并python3返回Python 3.6.9.

显示:

这与我得到的结果完全相同(按照这个问题的说明):

我知道在运行它之前对安装文件进行必要的调整,因为如果我理解正确,python 版本在其中被错误地硬编码。

我尝试过的其他事情并没有帮助:

0 投票
2 回答
866 浏览

c - 如何为 kotlin native 创建 void* 指针

我正在尝试使用本机库将现有的 c 代码转换为 kotlin。到目前为止,我成功地开始了,但被用于访问结构或对象的指针所困扰。像这样在c中:

但是如何将这些指针保存在 kotlin 中?像这样的尝试:

结果是

我读过: kotlin inerop

任何提示表示赞赏。

0 投票
1 回答
55 浏览

gatt - 您可以使用 GATT 配置服务来配置 Kontakt BeaconPro Eddystone-UID 值吗?

是否可以编写一个 linux 应用程序来更新配置为广播 Eddystone-UID 数据包的 Kontakt BeaconPro 上的命名空间和实例 ID?我使用 Gattlib 扫描 Eddystone 设备并发现它们的服务,但似乎不存在配置服务(服务 UUID a3c87500-8ed3-4bdf-8a39-a01bebede295)每个https://github.com/google/ eddystone/tree/master/配置服务

您可以在 Kontakt Android 应用程序中配置这些值,但我猜他们正在使用自定义服务进行配置?有人在这里有经验吗?

0 投票
1 回答
282 浏览

bluetooth - Ble 外围断开处理程序在 gattlib c 库中不起作用

我尝试了不同的更改,但我不知道为什么当 BLE 外围设备断开连接时,中央没有得到确认或处理程序没有调用。

我修改了 gattlib 发现示例以断开处理程序。我的代码

在 100 秒睡眠部分,我正在断开外围设备但我没有收到 disconnectionHandler 调用。我是否在 gettlib 库中犯了任何基本错误或任何错误?我用 btmon 日志检查断开连接打印即将到来,但它对 gattlib 库或我的应用程序并不丰富。

btmod 日志:

我正在使用 2020 年 7 月 21 日表示 gattlib 库的最新提交。

0 投票
0 回答
130 浏览

bluetooth-lowenergy - 使用 Gattlib 包写入而不响应 BLE 设备-RN4871

我正在尝试通过 RN4871 BLE 从微芯片(http://ww1.microchip.com/downloads/en/DeviceDoc/50002466B.pdf)控制 LED,并且我想提供简短的脉冲(低于 10 毫秒)。

为此,我从https://github.com/labapart/gattlib为 C 安装了 gattlib 包

首先,在我的 RN4871 方面,我使用 Write 属性定义了一个特征(使用从客户端到服务器的确认写入特征值)并使用库中的 read_write.c 示例工作得很好。

但是,由于我想进行快速通信以提供 LED 的短脉冲,因此我必须使用无响应功能的写入。在我的 BLE 设备端,我只创建了一个具有“无响应写入”属性的特征,并将数字输出与 UUID 句柄相关联。

对于脚本:

现在,当我使用库中的示例(nordic_UART)进行无响应写入时,它会失败。我删除了 notify 和 rx 的部分。我只使用 tx uuid。

我的问题更多的是基本层面,我是否遵循正确的方向来配置我的 BLE 设备以进行无响应写入?我应该添加其他特征(如通知)吗?或者问题是我如何管理 gattlib 包示例?

0 投票
0 回答
38 浏览

bluetooth - 如何为 GATT 服务应用经过身份验证的加密

我正在使用 Bluez5.60 库在 Raspberry Pi 3B+ 板上工作。

我使用O'Reilly:GATT(服务和特性)蓝牙低功耗 GATT 安全级别作为设计 GATT 服务 UUID 的参考。

我的 GATT 服务 UUID 字符串如下。“00001111-0000-1000-8000-00805f9b34fb”

请你帮我知道,

如何在 UUID 字符串中设置句柄值 (0x030D) 来为我的 GATT 服务启用经过身份验证的加密?

0 投票
2 回答
673 浏览

bluetooth-lowenergy - C中的轻量级蓝牙LE库

我一直在寻找一个简单的 C 语言蓝牙 LE 库,它允许我扫描 BLE 设备,连接并接收来自 BLE 设备的给定服务 UUID 的定期通知。直接与蓝牙套接字和 libbluetooth(从 BlueZ 创建)一起使用而不使用 DBUS 的东西。不需要配对和安全功能。

遇到了https://github.com/labapart/gattlib。看起来不错,但使用 dbus API 并且依赖于 libdbus、glib 等。要使用这个库,需要额外的 5MB 库,因此决定不使用 dbus。我们的设备上没有空间来支持压缩 rootfs 映像上的 5MB 蓝牙堆栈。我们的 rootfs 映像的总大小为 9 MB。带有 dbus 的蓝牙堆栈本身似乎是我们 rootfs 大小的 50% 以上。

还有 - https://github.com/edrosten/libblepp是 c++ 并且不使用 dbus。这将需要编写用于 C 程序的 C 包装器以及 C++ 构造的开销,例如编译器生成的复制构造函数、赋值运算符等。还有交叉编译的问题。

目标板是运行 Linux 的 Xilinx Zynq,构建系统是 buildroot。

请建议。

谢谢

0 投票
0 回答
289 浏览

bluetooth - 蓝牙守护进程的初始化序列

我正在寻找来自 Bluez 的轻量级蓝牙工具,而不依赖于 bluetoothd 和 dbus。BlueZ的文件夹“ src/shared ”有这些工具的代码。例如:btgattclient.c 在编译时产生“gattclient”。gattclient 能够连接到 ble 外围设备并读取/写入或接收来自 ble 设备的通知,但它需要初始化 hci0 接口,这是蓝牙正在做的事情。

在运行 bluetoothd 执行初始化之后,如果我杀死了 bluetoothd,gattclient 仍然可以正常工作,连接到 ble 设备并接收通知。似乎 bluetoothd 正在适配器上进行一些设置或初始化,以使“socket connect()”成功,而无需运行 bluetoothd 进行初始化,gattclient 为“connect()”套接字调用返回“连接被拒绝”。btmon 日志显示“connect()”在主机本身失败,没有到目标 BD 地址的连接请求。

如果这里的 BLE 专家可以指出蓝牙的初始化序列/命令,这将很有帮助,这样我就可以手动(使用 btmgmt)或以编程方式实现它,以促进 gattclient 的成功工作。

以下是蓝牙启动时的 btmon 日志 -

请指教。

谢谢

0 投票
0 回答
53 浏览

c - 带有 Gattlib C 库高延迟的 RN4871

我正在使用带有最新固件的 RN4871 通过 I2C LED 驱动器打开多个 LED。我使用 gattlib C/C++ 库通过我的 Ubuntu (20.04) 系统与 RN4871 通信(“无响应写入”),并通过连接到我的计算机和 RN4871 的示波器测量通信延迟。我将蓝牙设备上的通信参数设置为 7.5 ms 间隔,零延迟。

问题是如果我以 500 毫秒的间隔从计算机发送命令,我的通信延迟低于 20 毫秒,这对于我的应用程序来说是完美的。但是,如果我的命令相隔 1 秒或更长时间,则延迟会上升到 250 毫秒!在我的应用程序中,我需要以最小延迟(低于 40 毫秒)进行极快的通信,当然我的命令是以可变的间隔发送的(甚至可以相隔 10 秒)。我不知道这个问题来自哪里?它是否与 RN4871 中的某些睡眠过程有关,当超过 500 毫秒或其他时间没有数据传输时发生?

谢谢!