誰かがC#でBluetooth接続の信号強度を適切に追跡する方法を知っていますか?
WMIクエリを使用することを考えていましたが、接続をカプセル化するWMIクラスを追跡できませんでした。
アイデアは、携帯電話をポケットに入れたままマシンを離れると、Bluetooth信号が弱まり、マシンがロックされて、うんざりすることはありません。
Bluetooth デバイスで実行されているリンク マネージャー プロトコル (LMP) は、リンクのセットアップと構成を管理します。これはすべて、プロトコル データ ユニット(PDU)を交換する 2 つのデバイスによって行われます。RSSI のハードウェアおよびソフトウェア機能は、RSSI データの管理を可能にする LMP レベルで提供されます。これにより、RSSI レベルを読み取り、TX RF 出力電力 (LMP 電力コマンド) を制御して LMP を制御し、ステータス情報を取得できます。
したがって、実際に探しているものは、MS Bluetooth スタックを使用するときに LMP で定義されます。MS Bluetooth スタック HCI インターフェイスは、次の機能を既にサポートしています。
HCI_READHCIPARAMETERS
HCI_STARTHARDWARE
HCI_STOPHARDWARE
HCI_SETCALLBACK
HCI_OPENCONNECTION
HCI_READPACKET
HCI_WRITEPACKET
HCI_CLOSECONNECTION
マイクロソフトは HCI_Read_RSSI という関数を実装できたはずですが、実装していませんでした。
RSSI データを取得するには、LMP を使用して必要な情報を取得する必要があります。
// 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 Bluetooth スタックでのみ機能します。これも C++ コードです。これは、ページの下部にある専門家の交換投稿 (私は知っています) から入手しました。 http://www.experts-exchange.com/Programming/Wireless_Programming/Bluetooth/Q_21267430.html
あなたのためにそれを行う特定の機能はありません。
また、あなたを助けるかもしれないこのライブラリがあります.私はドキュメントを完全に見ていませんが、それについて良いことを聞いています. http://inthehand.com/content/32feet.aspx
がんばれ!