当前位置: 首页 > 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.zskr.cn/news/14262.html

相关文章:

  • 快微商城小程序管理系统:助力商家搭建高效便捷的新零售平台
  • KTV 娱乐小程序管理系统:数字化运营新选择,助力行业高效经营
  • 大模型落地实践指南:从技术路径到企业级解决强大的方案
  • 阿里云 CDN 多条件源站配置实战:跨地域环境分流
  • 2025标志牌生产厂家最新推荐排行榜:权威筛选优质标志牌品牌,助您精准选对交通标志牌,反光标志牌,道路标志牌供应商!
  • 2025 年脚手架厂家最新推荐榜:铝合金 / 盘扣 / 快装 / 移动式等多类型产品优选及国内实力企业排行指南
  • 完整教程:大模型浪潮下的“冷思考”:计算机视觉的变局与出路
  • 玳瑁的嵌入式日记---0928(ARM--I2C) - 教程
  • 关于处理大批量数据下载和查询时,怎么进行限流和熔断处理(AI)
  • 这款免费Windows优化神器!只有5M电脑绿色工具!ZyperWin++下载安装教程
  • 深入解析:DAY 04 CSS文本,字体属性以及选择器
  • 泛型类型参数
  • CF1980F2 Field Division (hard version) 题解
  • 天津港口海鲜之旅全攻略(2025最新版)
  • 如何从安卓手机恢复手机照相机消失的相机照片?(6个高效办法)
  • Chromium V8类型混淆漏洞CVE-2025-10585安全分析
  • sa-token开发时遇到的问题
  • 里克尔梅张 重庆最好的古典前腰
  • C# TCP - 串口转发 - 实践
  • DailyPaper-2025-9-29
  • MySQL版本选择
  • VC++ 使用OpenSSL创建RSA密钥PEM档案
  • DSA:DeepSeek Sparse Attention
  • 死锁的处理策略-死锁的检测和解除
  • Filebeat写ElasticSearch故障排查思路(上) - 教程
  • 告别 “一刀切” 管理!MyEMS 为不同行业定制专属能源优化方案
  • 「突发奇想,灵光乍现」 - hello
  • DirectX修复工具官方中文增强版下载!下载安装教程(附安装包),0xc000007b错误解决办法
  • 杂凑算法学习笔记
  • kuboard部署启用3个etcd(k8s单个master)