Мне трудно получить сервис GATT с моего устройства. Я использую Visual Studio 2017, создаю консольное приложение C ++ / WinRT. Пока у меня есть этот код:
struct Console
{
/* Create a watcher */
BluetoothLEAdvertisementWatcher watcher = BluetoothLEAdvertisementWatcher();
void Initialize()
{
watcher.ScanningMode(BluetoothLEScanningMode::Active);
watcher.Received({ this, &Console::OnAdvertisementReceived });
watcher.Start();
}
void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher const& _watcher, BluetoothLEAdvertisementReceivedEventArgs const& args)
{
hstring bleDeviceName = L"xxx";
BluetoothLEAdvertisement adv = args.Advertisement();
if (adv.LocalName() == bleDeviceName) {
_watcher.Stop();
winrt::Windows::Foundation::IAsyncOperation device = BluetoothLEDevice::FromBluetoothAddressAsync(args.BluetoothAddress());
if (device != NULL) {
winrt::Windows::Foundation::IAsyncOperation servicesIncluded = BluetoothLEDevice::GetGattServicesForUuidAsync(MyService_GUID);
}
}
else cout << "No device found " << endl;
}
};
int main()
{
Console test;
test.Initialize();
cin.get();
return 0;
}
Я не могу заставить эту функцию работать:
winrt::Windows::Foundation::IAsyncOperation servicesIncluded = BluetoothLEDevice::GetGattServicesForUuidAsync(MyService_GUID);
Вот Прототип. Это не статическая функция, и здесь может быть что-то делать. Спасибо за любую помощь.
Задача ещё не решена.
Других решений пока нет …