WCH沁恒单片机
直播中

李艺银

7年用户 1016经验值
私信 关注
[问答]

通过修改peripheral例程实现通过蓝牙发送一个数据,然后再返一个数据回来的疑问求解

我想通过修改peripheral例程实现通过蓝牙发送一个数据,然后再返一个数据回来,几个疑问
1、static gattAttribute_t simpleProfileAttrTbl[]列表
     基本搞清了GATT的特征值在这个列表中初始化 simpleProfileAttrTbl,特征4中多定义了一个服务,这个服务是否与例子中的notify有关系?从调试助手上,点击特征4的接收数据后界面会与其他几个不同,这个差异是要在哪里定义或申明吗?我在simpleProfileAttrTbl里把特征1改成了和4一样的结构,就不会有4的效果
    static gattCharCfg_t simpleProfileChar4Config[4];这个数组是的作用是不是用来存储连接的信息的?
2、发送数据
   从特征1上写入数据能不能从特征1上自动返回来,我看例程上是bStatus_t simpleProfile_Notify( uint16 connHandle, attHandleValueNoti_t *pNoti )这个函数通过特征4发的数据,我改成指向1发不出东西(SIMPLEPROFILE_CHAR4_VALUE_POS这个改成2)
3、发送函数
    bStatus_t GATT_Notification( uint16 connHandle, attHandleValueNoti_t *pNoti, uint8 authenticated );发送数据是不是都可以通过这个函数实现


  

回帖(2)

郭武莱

2022-5-23 11:27:32

  • 配置文件包含服务,服务包含特征,而不是在特征中定义服务。关于显示界面不一样可以发个截图看看,猜测是因为特征声明中的特征性质字段定义不同,GATT_PROP_READ | GATT_PROP_WRITE | GATT_PROP_NOTIFY
    你所说的连接信息是指哪些信息?那个数组是用来存储连接配置信息,比如说通知是否打开
  • 能不能从特征1发送通知要看特征1的特性声明字段中是否标记有GATT_PROP_NOTIFY这个
  • 要理解BLE是主从拓扑,从底层理解从设备不存在发送数据这个动作,他只能把数据放到一个位置等主设备来取,通知和指示是在这个结构上实现的一个类似于主动发送的效果,能不能使用GATT_Notification发送通知要看该特征具不具有GATT_PROP_NOTIFY权限
       我大概是这样理解的
举报

王希予

2022-5-23 11:27:37
非常感谢    static uint8 simpleProfileChar1Props = GATT_PROP_READ | GATT_PROP_WRITE;这个属性改成GATT_PROP_READ | GATT_PROP_WRITE | GATT_PROP_NOTIFY就可以了,我试了一下通过notify来做转发可以行的通
举报

更多回帖

发帖
×
20
完善资料,
赚取积分