当前位置: 首页 > news >正文

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

【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

 

http://www.hskmm.com/?act=detail&tid=21456

相关文章:

  • 2025 年 AI 健康管理厂商最新推荐榜单:覆盖多场景需求,深护智康等优质品牌助力行业升级
  • 虚幻5.6插件添加自定义shader
  • 在线考试小程序管理系统:一站式智能考试解决方案,助力多场景高效考核
  • 快微商城小程序管理系统:助力商家搭建高效便捷的新零售平台
  • 2025最新布袋包装厂家推荐排行榜:布袋包装,布袋,手提袋,帆布袋定制,无纺布袋,布袋生产,云南布袋包装,茶叶布袋生产商优选指南
  • KTV 娱乐小程序管理系统:数字化运营新选择,助力行业高效经营
  • 城市电商小程序管理系统:助力商家搭建全渠道数字化经营体系
  • oppoR9m刷Linux系统: ColorOS系统OTA卡刷降级系统版本
  • 深入解析:[免费]基于Python的在线音乐网站系统(后端Django)【论文+源码+SQL脚本】
  • 勒索软件速度危机:AI驱动下的网络安全新挑战
  • 2025沈阳标识标牌厂家推荐排行榜:聚焦行业产能与技术实力,精选沈阳标识标牌优质企业供订做参考
  • Oracle故障分析:数据库不能open下查看undo段的名字
  • 实用指南:智慧外贸平台|基于Java+vue的智慧外贸平台系统(源码+数据库+文档)
  • L04_新建springboot项目与新建helloword(菜鸟版)
  • Implicit Neural Representations with Periodic Activation Functions
  • 故障处理:Oracle一体机更换磁盘控制器后部分磁盘状态异常的案例处理
  • 34
  • ObservableCollection子项属性字段值变化的监听处理
  • 阿里云 CDN 多条件源站配置实战:跨地域环境分流
  • 2025年破碎机厂家最新权威推荐榜:破碎机实力厂商技术服务全景评测及选购指南
  • 什么关系?就是ajax与jQuery
  • 2025标志牌生产厂家最新推荐排行榜:权威筛选优质标志牌品牌,助您精准选对交通标志牌,反光标志牌,道路标志牌供应商!
  • 2025 年脚手架厂家最新推荐榜:铝合金 / 盘扣 / 快装 / 移动式等多类型产品优选及国内实力企业排行指南
  • 2025年沈阳标识标牌厂家最新推荐榜单:涵盖订做标识标牌,广告标识标牌,安全出口标识标牌、不锈钢等多类型标识,全面解读企业产能与技术实力
  • 实用指南:部署 Jenkins 服务器
  • This is my First Blog -BIGBASIS
  • 【光照】[PBR][法线分布]为何不选Beckmann
  • 180课时吃透Go语言游戏后端开发2:Go语言中的变量 - 实践
  • 2025“钉耙编程”中国大学生算法设计暑期联赛(4)
  • qdg