当前位置:  开发笔记 > 编程语言 > 正文

蓝牙信号强度

如何解决《蓝牙信号强度》经验,为你挑选了1个好方法。

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

我在考虑使用WMI查询,但无法跟踪封装连接的WMI类.

我的想法是,当我把我的机器放在口袋里时,蓝牙信号会减弱而我的机器会锁定,我不会上瘾.



1> 小智..:

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

因此,当您使用MS蓝牙堆栈时,您在实际寻找的内容是在LMP中定义的.MS蓝牙堆栈HCI接口已经支持以下功能,即

HCI_READHCIPARAMETERS
HCI_STARTHARDWARE
HCI_STOPHARDWARE
HCI_SETCALLBACK
HCI_OPENCONNECTION
HCI_READPACKET
HCI_WRITEPACKET
HCI_CLOSECONNECTION

我想微软可能已经实现了一个名为HCI_Read_RSSI的功能,但他们没有.

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

示例psuedocode读取RSSI数据

// Read HCI Parameters

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

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

古德勒克人!

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有