在 Windows 上通过 RSSI 检测蓝牙信号强度

问题描述 投票:0回答:1

我试图了解如何在 Windows 上使用 C# 或 C++ 访问蓝牙(非 LE)连接的 RSSI。

我的理解是没有直接的“GetRSSI()”类型命令,但是有没有间接的方法来访问它?

到目前为止我发现的一切似乎都是针对 LE 连接。

编辑: 我研究了 AEP 并尝试从连接的 BT 设备获取 SignalStrength AEP。

    foreach (var key in deviceInformation.Properties.Keys)
    {
        Debug.WriteLine($"{key}: {deviceInformation.Properties.GetValueOrDefault(key)}");
    }

给予:

System.ItemNameDisplay: <ommitted>

System.Devices.DeviceInstanceId: 
System.Devices.Icon: C:\Windows\System32\DDORes.dll,-2001
System.Devices.GlyphIcon: C:\Windows\System32\DDORes.dll,-3001
System.Devices.InterfaceEnabled: 
System.Devices.IsDefault: 
System.Devices.PhysicalDeviceLocation: 
System.Devices.ContainerId: 

我省略了物品名称。

所以看起来没有 AEP,除非我遗漏了一些东西?

c# c++ windows bluetooth rssi
1个回答
1
投票

我知道这已经晚了,但我刚刚开始一个新项目,我还想了解有关蓝牙(非 LE)设备的 SignalStrength 的信息。

@Mike-Petrichenko 给了你一些很好的提示。按照他的建议搜索“System.Devices.Aep.SignalStrength”后,我发现了这篇文章

在浏览了OP的代码并进行了一些调试之后,我想出了这个解决方案:

private const string SignalStrengthProperty = "System.Devices.Aep.SignalStrength";
var additionalProperties = new[] { SignalStrengthProperty };

DeviceWatcher mWatcher = DeviceInformation.CreateWatcher(BluetoothDevice.GetDeviceSelector(), additionalProperties);
var rssi = Convert.ToInt16(deviceInformation.Properties[SignalStrengthProperty]);
© www.soinside.com 2019 - 2024. All rights reserved.