【WCH蓝牙系列芯片】-基于CH592开发板——HID_Keyboard中添加读、写、通知的服务属性

-------------------------------------------------------------------------------------------------------------------------------------

  在BLE_hid程序中,有这样的操作,需要通过连接手机的APP,进行蓝牙服务的读、写和notiofy的接收数据。这次介绍在HID_Keyboard例程中添加一个自定义的UUID服务,进行读取,写入和通知的UUID服务属性的详细过程。添加的方法和之前的博客中讲解添加一组自定义128bit的UUID属性服务,移植方法类似。基本的更详细的移植步骤可以参考【WCH蓝牙系列芯片】-基于CH582开发板—蓝牙从机中添加一组自定义128bit的UUID属性服务

  在这里讲解一下,在HID程序中如何添加的流程。

  第一、先移植user_gap_service.c和user_gap_service.h文件

image-20250929095429760

  第二、在hidkbd.c文件中,先添加头文件#include "user_gap_service.h"

image-20250929103759474

  然后添加声明函数

  ble_instrument_appChangeCB————————APP 状态变化回调函数

  ble_instrument_appChar4Notify————————蓝牙特征值 4(Characteristic 4)向 APP 发送通知(Notify)的函数

  peripheralConnItem_t peripheralConnList——————————定义一个BLE 从设备连接信息结构体变量,用于存储与 APP 的连接状态数据。

  uint8_t peripheralMTU = ATT_MTU_SIZE——————————定义并初始化当前蓝牙连接的 MTU(最大传输单元)值

  performPeriodicTask——————————声明一个周期性任务执行函数,用于定时处理设备与 APP 的交互逻辑

image-20250929103816634

  然后再添加蓝牙 GATT服务中 “回调函数结构体” ,用于将 “特征值变化事件” 与具体的处理函数绑定一起

image-20250929103837838

  第三、在HidEmu_Init初始化函数中,添加自定义UUID的服务

  然后在通过定义特征值数组、调用ble_instrument_app_SetParameter,为服务下的 4 个特征值设置初始值 ——APP 首次连接时读取特征值,拿到的就是这些初始数据。

image-20250929110534693

将应用程序的回调函数注册到 ble_instrument_app_SimpleProfileCBs

image-20250929110552253

  第四、在成功建立连接之后,

  添加peripheralConnList.connHandle = event->connectionHandle;:将连接句柄保存到自定义的 “从设备连接信息结构体” 中,这样就可以通过让HID设备能通过peripheralConnList快速获取当前连接句柄,这样比如发送通知前,检查是否存在有效连接。

  添加peripheralMTU = ATT_MTU_SIZE,进行初始化MTU值,然后再启动一个TMOS任务,操作一个1秒的定时发送数据任务

image-20250930105115885

  第五、添加performPeriodicTask 函数,用于操作CHA4的notify数据的发送。然后再注册一个TMOS事件任务中,去定时执行这个performPeriodicTask 函数。

image-20250930113927084

image-20250930114220605 

第六、添加蓝牙设备于APP(主机)之间实现双向通信的函数

  • ble_instrument_appChar4Notify:负责蓝牙设备(从机)主动向 APP(主机) 发送数据(通过 BLE 的 Notify 机制);

  • ble_instrument_appChangeCB:负责APP(主机) 修改蓝牙设备(从机)特征值后,设备的响应处理(回调函数)。

 

image-20250930114506047

image

  这样就完成整个移植的过程。通过BLE调试助手进行连接设备,进行观察调试。

  在连接上HID Keybroad的设备之后,会多出来一个128bit的UUID服务,里面有读属性,写属性和通知属性(notify)

image-20250930134855671

image-20250930135452434 

  然后,打开接收通知数据的按键,这样主机就能接收到,从机设备中定时发送的notify的数据,

image-20250930135638882

   然后通过BLE调试软件,通过Write写数据给设备从机,并通过打印来观察发送的数据

image-20250930135947226

image-20250930134611396

 

posted on 2025-09-30 14:17  凡仕  阅读(3)  评论(0)    收藏  举报