- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 BlueZ C API 对我的蓝牙鼠标进行编程以读取距离。我已经设置了一个蓝牙加密狗。目前,我必须将鼠标移动到距离笔记本电脑(蓝牙加密狗)至少 5-10 英尺的地方才能读取 RSSI。低于这个距离,我得到的大部分读数为 0。
有什么方法可以使用这个API来获取更精确的RSSI值,以便我们可以跟踪这个范围内的距离吗?
int8_t Bluetooth::read_rssi(int to) {
int dd = hciSocket;
struct hci_conn_info_req *cr;
bdaddr_t bdaddr;
int8_t rssi;
str2ba(bt_addr, &bdaddr);
if (dd < 0) {
perror("HCI device open failed");
exit(1);
}
cr = (hci_conn_info_req *)(malloc(sizeof(*cr) + sizeof(struct hci_conn_info)));
if (!cr) {
perror("Can't allocate memory");
exit(1);
}
bacpy(&cr->bdaddr, &bdaddr);
cr->type = ACL_LINK;
if (ioctl(dd, HCIGETCONNINFO, (unsigned long) cr) < 0) {
perror("Get connection info failed");
exit(1);
}
if (hci_read_rssi(dd, htobs(cr->conn_info->handle), &rssi, 1000) < 0) {
perror("Read RSSI failed");
exit(1);
}
return rssi;
}
最佳答案
hci_read_rssi
可能不是您想要的。这不是实际的远程 RSSI。来自描述 HCI_Read_RSSI 命令的 BT 规范部分:
The RSSI parameter returns the difference between the measured Received Signal Strength Indication (RSSI) and the limits of the Golden Receive Power Range for a Connection Handle to another BR/EDR Controller. Any positive RSSI value returned by the Controller indicates how many dB the RSSI is above the upper limit, any negative value indicates how many dB the RSSI is below the lower limit. The value zero indicates that the RSSI is inside the Golden Receive Power Range.
我相信您想要的值是查询/扫描中包含的值。我知道有一种方法可以做到这一点,但不确定您是否可以接受或是否是最好的方法。
bluez dbus 设备 API 将 RSSI 作为属性之一。可以找到 api 文档 here .
更新:我自己还没有尝试过,但看起来 pybluez 支持获取查询 RSSI。参见 this pybluez example .
这是 bluez4 的一个简单示例:
关于c - BlueZ 蓝牙 API 和距离校准精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30025139/
我正在尝试使用 BlueZ 4.X DBus 接口(interface)在 Linux 上建立与蓝牙 4.0 LE 设备的连接。 为了测试这一点,我使用以下命令: dbus-send --system
我有一个连接到 Linux 设备的蓝牙耳机。我想以编程方式接收播放/暂停/下一个/上一个/volUp/volDown 按钮按下。 经过一些研究,我发现我可以使用 dbus 与 Bluez 交互。我尝试
我正在使用 BlueZ 3.x.我有一个 linux 嵌入式设备,我需要使用蓝牙技术发送和接收文件,使用 Obex . (注意:BlueZ 4.x 甚至无法在我们的特定平台上编译。) 我不需要 PIN
Linux下的bluez是否可以同时连接多个经典和低能耗设备? bluez 网站提供这样的信息不是很有帮助。 最佳答案 是的,我已成功同时连接到 7 个低能耗设备。最大值因您使用的硬件而异。您还可以连
我有一个自定义 GATT 服务器,作为插件在 Linux 上使用 BlueZ 4.101。我现在正在尝试设置自定义扫描响应广告数据。我在 iOS 上使用 LightBlue 来调试我的 GATT 服务
我想在测试设置中实现的是: 运行: hcitool -i hci0 lescan --duplicates --passive 在一个外壳上 并联在另一个via上 hcitool -i hci0 le
我正在使用 Fedora 24。对于我的论文,我必须从源代码构建 BlueZ,因为我需要实验性功能。现在,最佳做法是什么?在从源代码重新安装之前,我是否必须从操作系统中删除 BlueZ?当我尝试使用
传输端点未连接 #include #include #include #include #include int main(int argc, char **argv) { struct s
用例 Ubuntu 机器正在模拟键盘 Ubuntu 机器(虚拟键盘)模拟连接到要控制的远程设备 问题 在正常情况下,HID 描述是通过 SDP 报告的,因此,当设备连接到键盘时,它已经知道要使用的 H
我正在用 C 为 Bluez 5.18 编写插件代码,我想创建自己的 BLE GATT 配置文件作为插件(共享库)。我需要从主代码调用函数,当我编译它时,没有错误,但是在加载插件时,它因 undefi
我正在使用 Raspberry Pi(运行 Jessie)、Bluez 和 iBeacons(10 个 iBeacons)。我的应用程序(用 Python 编写)嗅探 iBeacons 并报告 MAC
在一天的大部分时间里,我一直在努力让 BlueZ 在我的 Ubuntu 桌面上运行。它只是行不通。我可以通过系统对话成功地将我的设备与我的计算机配对,但 BlueZ 扫描从未发现任何东西。有没有 Bl
我正在浏览 Device API在 BlueZ 5.44 中,我对连接和配对设备之间的区别有点困惑。我看到连接是基于配置文件的,而配对似乎独立于配置文件。配对似乎更多地与 SDP 和身份验证有关。 但
如何重建 bluez?是否可以?例如,我想更改 avctp.c 中的某些内容。我从他们的网站下载了最新的 bluez 版本并进行了我需要的更改。现在,我如何使更改生效;即我需要做什么来重建 bluet
我在 linux 中使用内核版本 3.0.35 和 bluez-4.98。有了这个,我就可以根据其中一个 SO 问题中给出的 hcitool 命令来宣传 ibeacon。我也能够连接到其他 ble 设
我正在用 C/C++ 为低功耗蓝牙设备编写一个库。到目前为止,我一直在使用 Bluez 公开的 D-Bus 接口(interface),并且能够发现、连接设备并与之通信。 但是,当设备由于链接故障或超
我编写了一个 Python 程序,它通过蓝牙套接字(参见下面的示例)读取和写入 L2CAP 连接以与某些硬件通信。然而,代码可能想要为蓝牙适配器做太多的 IO 处理,所以我通过在需要时放慢 bar 循
说明: 我有一个带有蓝牙功能的小型内部设备。 目前,其他设备连接到该盒子。 需求: 现在我们必须使它成为奴隶,以便它与其他设备连接。我想知道该怎么做?我不需要源代码或任何只是你的意见。 附加信息: 该
我在我的 Linux 板上使用 bluez 附带的 example-gatt-server.py 脚本。我想向我的自定义特征之一添加通知。为此,我需要定义客户端特征配置描述符并将其添加到我的自定义特征
使用 BlueZ 蓝牙堆栈,如何以编程方式枚举已配对但不一定连接的设备? 最佳答案 更新:下面的内容并不像我最初想象的那么简单。 adapter_get_devices 只是起点。如果您可以发布其中的
我是一名优秀的程序员,十分优秀!