windows提供的bluetooth api都比较老,本身蓝牙相关的资料也并不多,基本上都是相互转载的内容,要搜索ble设备,那是少之又少。BLE全拼:bluetooth-low-energy。Windows连接其它的BLE设备需要win8以上的系统才支持,特地升级系统,模块用系统自己的蓝牙设置可以正常连接其它设备。
头文件
#ifdef __BLE__
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Devices.Bluetooth.h>
#include <winrt/Windows.Devices.Bluetooth.Advertisement.h>
#include <afxcontrolbars.h>
using namespace winrt;
using namespace Windows::Devices::Bluetooth;
using namespace Windows::Devices::Bluetooth::Advertisement;
#endif // __BLE__
申明
//蓝牙
#ifdef __BLE__
BluetoothLEAdvertisementWatcher m_btWatcher;
#endif
实现搜索代码
#ifdef __BLE__
//蓝牙
static BluetoothLEAdvertisementWatcher m_btWatcher;
m_btWatcher.ScanningMode(BluetoothLEScanningMode::Active)
m_btWatcher.Received([](BluetoothLEAdvertisementWatcher w, BluetoothLEAdvertisementReceivedEventArgs e) {
if (e.AdvertisementType() == BluetoothLEAdvertisementType::ConnectableUndirected)
{
uint64_t address = e.BluetoothAddress();
//保存有效地址
BluetoothLEDevice dev = BluetoothLEDevice::FromBluetoothAddressAsync(address).get();
Debug(TEXT("%d---------->名称:%s\n"), e.AdvertisementType(), dev.Name().c_str());
if (_this->m_btSetName == dev.Name().c_str())
{
m_btWatcher.Stop();
Debug(TEXT("蓝牙名称设置成功!\n"));
}
dev.Close();
}
});
if (b)m_btWatcher.Start();
else m_btWatcher.Stop();
#endif
微软官方也提供了C++和C#相关的例子。
本文链接:https://it72.com/12685.htm