例如,我有两台心率监测器与我的平板电脑配对。 我正在使用此类代码获取HRM设备列表:
var devices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync
(
GattDeviceService.GetDeviceSelectorFromUuid(GattServiceUuids.HeartRate)
);
然后我在GUI中显示一个列表框,设备名称来自devices [i] .Name。 例如,我选择索引为0的设备。然后我可以访问它HR HRvice和HRM特性:
var service = await GattDeviceService.FromIdAsync(devices[0].Id);
var characteristic = await service.GetCharacteristics(attCharacteristicUuids.HeartRateMeasurement);
除了心率,我需要电池状态。如何才能访问相同(已选择)设备的电池服务?
答案 0 :(得分:0)
我们开始之前的一些信息:
您可以将蓝牙设备与计算机配对,然后再进行扫描!
ListBox1.Items.Clear();
var devices = await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort));
foreach (var device in devices)
{
ListBox1.Items.Add(device);
}
如果您想了解蓝牙设备的电池寿命:
How to get the battery level after connect to the BLE device?
要一次访问多个服务,您需要"重新连接" 到设备:
Device A一次只能连接一台设备B的S服务。设备A可以同时连接Device B,C,D,E等服务S.
来源:Establishing multiple bluetooth SPPs at the same time
但是不要对方法GetAllIncludedServices();
感到困惑,因为它确实返回" 包含的服务"。正如an other question所述的一个答案:
您可能不想获得"包含的服务"。包含的服务是BLE中的一个特殊概念,我怀疑您使用的是用于将一个服务链接到另一个服务。