我试图了解如何在 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,除非我遗漏了一些东西?
我知道这已经晚了,但我刚刚开始一个新项目,我还想了解有关蓝牙(非 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]);