首页 / 知识

关于c#:蓝牙信号强度

2023-04-15 13:46:00

关于c#:蓝牙信号强度

Bluetooth Signal Strength

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

我当时在考虑使用WMI查询,但无法追踪封装连接的WMI类。

我的想法是,当我将手机放在口袋里离开机器时,蓝牙信号减弱,机器锁定,我不会被打扰。


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

因此,使用MS Bluetooth堆栈时,您真正要寻找的是在LMP中定义的。
MS Bluetooth Stack HCI接口已经支持以下功能,即

HCI_READHCIPARAMETERS
HCI_START硬件
HCI_STOPHARDWARE
HCI_SETCALLBACK
HCI_OPENCONNECTION
HCI_READPACKET
HCI_WRITEPACKET
HCI_CLOSECONNECTION

我想微软可以实现一个叫做HCI_Read_RSSI的函数,但是他们没有实现。

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

示例psuedocode读取RSSI数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 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

祝你好运!


信号连接封装查询

最新内容

相关内容

猜你喜欢