FYI this technique is working great for me! Tested it successfully with both a Cardiosport strap and a Scosche Rhythm+.
Example code:
private void wclBluetoothLeBeaconWatcher_OnAdvertisementUuidFrame(object sender, long address, long timestamp, sbyte rssi, Guid uuid)
{
// look for a device advertising that it has a HeartRateService, adding it if so
if (uuid == Guid.Parse("0000180d-0000-1000-8000-00805f9b34fb"))
{
// add to list of devices
}
}
// later, after enumeration is over and the user has chosen the HRM they want to connect to
Client = new wclGattClient
{
Address = address
};
Client.Connect(Radio);
// read services, locate HeartRateService, read its characteristics, find the HeartRateMeasurement characteristic, and subscribe to it