Windows端用于开发低功耗蓝牙项目的DLL(二)


各位读者好,新版本的系统平台低功耗蓝牙开发接口库已发布,提供BLE设备的枚举、扫描、连接和检测,蓝牙服务和特征的枚举、读写、订阅,控制器版本查询等API函数。支持Windows、Android等系统。链接:http://www.wch.cn/downloads/WCHBleLib_MultiOS_ZIP.html

前言

上一篇文章中,介绍了适用于Win10系统对BLE开发的win32动态链接库,并对库函数进行了细致的讲解,也简单说明了下该开发库的使用方法。
这一章,则具体说明了在BLE开发中对该库的具体使用方法,如何使用这些库函数,如何处理预定义的回调函数。
WCH_B LE_DLL开发库和例程下载

1. 上层应用中回调函数的定义

1.1 异步操作正常完成的回调函数
typedef void (CALLBACK* Notify_AppService)(ULONG uAction_Service, PCHAR tmpStr, INT iExtraInfo);

当前BLE操作,已经正常完成时,该回调函数会被调用。桌面应用程序可以定义一个结构相同的回调函数,用来获取BLE操作完成后的返回信息。
e.g.

VOID CALLBACK NotifyAppservice(ULONG uAction_service, PCHAR tmpstr, INT iExtraInfo);

第一个参数uAction_service表示当前已完成的BLE操作序号;
第二个参数tmpstr表示操作完成后的字符串返回信息;
第三个参数iExtraInfo只有在获取BLE设备特征所支持的功能时才会用到,表示具体的功能值。
p.s.具体参数意义可参照第一篇博客中的头文件代码片段。

1.2 扫描附近BLE设备时的回调函数
typedef void (CALLBACK* Notify_DeviceWatcher)(PCHAR deviceName, PCHAR deviceID);

当执行了扫描BLE设备的操作时,每当扫描到任意设备,或是设备的连接状态发生变化时,该回调函数都会被调用。
e.g.

VOID CALLBACK NotifyDeviceWatcher(PCHAR deviceName, PCHAR deviceID)
{
	//...
	// 当deviceName为removed_Device时,表示对应deviceID的BLE设备无法连接,需要剔除
	if (deviceName == L"removed_Device")
	{
		int iCount = m_CtrlList.GetItemCount();
		for (int i = 0; i < iCount; i++)
		{
			CString tmpStr = m_CtrlList.GetItemText(i, 1);
			if (tmpStr == deviceID)
			{
				m_CtrlList.DeleteItem(i);
				break;
			}
		}
	}
	// 把扫描到的deviceID保存
	else
	{
		m_CtrlList.InsertItem(listCount, deviceName);
		m_CtrlList.SetItemText(listCount, 1, deviceID):
		m_CtrlList.EnsureVisible(listCount++, FALSE);
	}
}

完整代码可参考链接中的MFC例程。

1.3 BLE操作异常时调用的回调函数
typedef void (CALLBACK* Notify_ErrorStatus)(PCHAR errorString);

当前BLE操作出现异常时,该回调函数会被调用,并通过字符串参数传递异常信息。
e.g.

VOID CALLBACK NotifyErrorStatus(PCHAR errorString);
1.4 BLE读取特征值操作和Notify时的回调函数
typedef void (CALLBACK* Notify_ReadBytes)(PUCHAR readBytes, INT iLength);

当前执行的是BLE读取特征值操作或是开启了Notify订阅时,每当读取到特征值时,会调用该回调函数。
e.g.

VOID CALLBACK NotifyReadBytes(PUCHAR readBytes, INT iLength);

第一个参数readBytes表示读取到的Hex值;
第二个参数iLength表示读取到的字节长度。

2. MFC例程使用说明

为方便用户使用该库进行开发,我们做了一个MFC的例程用来示范,软件详细使用说明如下:

2.1 建立后台任务通讯

软件界面
先按照第一篇博客配置好BLE开发需要的所有设置后,打开MFC例程如上图所示,首先点击新建连接按钮,与UWP任务建立连接。

2.2 扫描附近BLE设备

连接建立成功后,点击开始扫描按钮,开始扫描附近的所有BLE设备,待列表中出现待连接BLE设备时,单击选中它,然后进入下一步。
在这里插入图片描述

2.3 发送BLE设备信息

选中BLE设备时,点击传ID把指定的BLE设备信息传给后台处理程序,准备连接。
在这里插入图片描述

2.4 建立BLE设备连接

然后开始建立与BLE设备的连接,点击开始连接设备

2.5 获取服务

连接成功后,点击尝试获取服务,可获取该设备的所有服务,显示在列表中。
在这里插入图片描述

2.6 获取特征

选中一个服务后,点击尝试获取特征,可获取该服务的所有特征,显示在列表中。
在这里插入图片描述

2.7 获取特征支持的操作

选中一个特征后,点击尝试获取操作后,可枚举出该特征所支持的所有功能。
在这里插入图片描述

2.8 读,写, Notify

根据支持的不同功能,可分别进行读,写,开启Notify的功能,以下是读功能的示例,点击READ,可读出特征值:
在这里插入图片描述

2.9 断开蓝牙连接

操作完成后,点击断开蓝牙连接可断开与BLE设备的通讯。

2.10 断开后台任务通讯

所有操作完成后,点击关闭即可断开所有通讯连接。

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PC技术小能手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值