C++蓝牙BLE开发之搜索设备

Home / C++ MrLee 2021-4-28 3470

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://www.it72.com/12685.htm

推荐阅读
最新回复 (0)
返回