gpt4 book ai didi

c# - 蓝牙信号强度

转载 作者:太空狗 更新时间:2023-10-29 21:42:34 30 4
gpt4 key购买 nike

有谁知道如何在 C# 中跟踪蓝牙连接的信号强度?

我正在考虑使用 WMI 查询,但无法找到封装连接的 WMI 类。

我的想法是,当我 Handlebars 机放在口袋里而离开我的机器时,蓝牙信号减弱并且我的机器锁定并且我不会被山羊羊。

最佳答案

在蓝牙设备中运行的链路管理器协议(protocol) (LMP) 负责链路设置和配置。这全部由两个交换协议(protocol)数据单元 (PDU) 的设备完成。RSSI 的硬件和软件功能在 LMP 级别提供,允许您管理 RSSI 数据。它允许您读取 RSSI 级别并控制 TX RF 输出功率(LMP 功率命令)LMP 以进行控制并获取状态信息。

因此,在使用 MS 蓝牙堆栈时,您实际寻找的是在 LMP 中定义的。MS Bluetooth Stack HCI 接口(interface)已经支持以下功能,即

HCI_READHCI参数
HCI_STARTHARDWARE
HCI_STOPHARDWARE
HCI_SETCALLBACK
HCI_OPENCONNECTION
HCI_READPACKET
HCI_WRITEPACKET
HCI_CLOSECONNECTION

我想微软本可以实现一个名为 HCI_Read_RSSI 的函数,但他们没有。

要获取 RSSI 数据,您必须使用 LMP 来获取所需的信息。

读取 RSSI 数据的伪代码示例

// Read HCI Parameters

#include <windows.h>
#include <windev.h>
#include <bt_buffer.h>
#include <bt_hcip.h>
#include <bt_os.h>
#include <bt_debug.h>
#include <svsutil.hxx>
#include <bt_tdbg.h>

unsigned short hci_subversion, lmp_subversion, manufacturer;
unsigned char hci_version, lmp_version, lmp_features[8];

if (BthReadLocalVersion (&hci_version, &hci_subversion, &lmp_version, &lmp_subversion, &manufacturer, lmp_features) != ERROR_SUCCESS) {
SetUnloadedState ();
return 0;
}
WCHAR szLine[MAX_PATH]
unsigned char *pf = lmp_features;

if ((*pf) & 0x02) {
wsprintf (szLine, L" RSSI");
}

这仅适用于 Microsoft 蓝牙堆栈。这也是 C++ 代码。我从页面底部的专家交流帖子(我知道)那里得到了这个。 http://www.experts-exchange.com/Programming/Wireless_Programming/Bluetooth/Q_21267430.html

没有特定的功能可以为您完成。

还有这个库可以帮助你,我没有完整地查看文档,但我听说过关于它的好消息。 http://inthehand.com/content/32feet.aspx

祝你好运!

关于c# - 蓝牙信号强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66421/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com