RTL8762蓝牙笔记-----主从机通信(二)

本文详细介绍了蓝牙通信中主机向从机发送数据、从机向主机发送数据(采用notification方式)、主机接收从机数据的过程,包括使能Notify_CCCD和不同类型的读写操作。同时,讲解了从机如何接收主机数据的回调函数机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

蓝牙通信有个基本的功能,那就是使用蓝牙来进行数据通信。

数据通信可以分为:主机向从机发送数据(GATT的client主动向service发送数据);主机接收从机发来的数据;从机向主机发送数据(GATT的service主动向client发送数据);从机接收主机发送来的数据。

一、主机向从机发送数据

主机发送数据,调用的是clientAPI_AttribWrite( TClientID clientID, PWriteReq pWriteReq ) 函数,现在我们看看发送函数PWriteReq 的结构体;

typedef struct
{
    uint16_t  wHandle;                               /**< Handle of the attribute to be written */
    TBlueAPI_GATTWriteType  wType;      /**< Write type, command or request */
    uint16_t  wLength;                               /**< Length of data to be written */
    uint8_t  *pData;                                   /**< Data to be written */

} TWriteReq, * PWriteReq;

下面是使用发送函数例子:

   TWriteReq writeReq;

   writeReq.wHandle = 0x0d;         //对端接收从机的句柄
   writeReq.wType = blueAPI_GATTWriteTypeRequest;
   writeReq.wLength = sizeof( buff); //要发送数据的长度
   writeReq.pData = (uint8_t *)&buff;//要发送的数据

  clientAPI_AttribWrite( SimpClient_ClientID, &writeReq );

 发送函数有两个参数,一个是client module,另外就是写结构体,调用次函数就可以将数据发送给从机了。当然,需要主机与从机连接后进行上述操作。

二、从机向主机发送数据

从机向主机发送数据,使用的是notification,RTL8762中使用的是如下发送函数:

 ProfileAPI_SendData(uint8_t ServiceIdx,
                         uint16_t wAttribIndex,
                         uint8_t* pData,

                         uint16_t     wLength)

需要正确写入函数里面的四个参数,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值