-------------------------------------------------------------------------------------------------------------------------------------
在EVT例程BLE-UART蓝牙透传功能中,通过串口发送数据至蓝牙时,每次需要开启notify,才能接受新的数据。
当串口向蓝牙发送数据后,再打开notify,APP并不会读取到任何数据。
针对这个问题,可以进行改变。一般都是主机使能通知,再开始接受数据。
现在可以添加一个函数,让从机自己主动使能通知(notify),这样串口发送数据至蓝牙就可以直接读取数据。
在BLE-UART例程中,在ble_uart_service.c中添加使能通知的函数:
//定义使能通知函数(connection_handle连接句柄,表示要进行操作的连接) uint8 enable_notify(uint16 connection_handle, uint8 enable) { uint16 cccd = 0; //定义一个变量cccd,特征的配置值 //判断是否使能通知 if(enable) //使能 { cccd |= GATT_CLIENT_CFG_NOTIFY; //将cccd置为使能通知的值 } else { cccd &= ~GATT_CLIENT_CFG_NOTIFY; //不使能,将cccd置为禁止通知的值 } return GATTServApp_WriteCharCfg( connection_handle, ble_uart_TxCCCD, cccd ); //将特征配置值写入到连接句柄,以实现通知的使能或禁用 }
在ble_uart_service.h中声明这个函数,extern uint8 enable_notify(uint16 connection_handle,uint8 enable);
在连接后此函数(Peripheral_LinkEstablished)调用使能通知函数,就可以了。
此时,当串口发送数据给蓝牙时,不需要手动开启通知,直接就可以读取数据。
标签:使能,enable,通知,蓝牙,开发板,从机,notify,cccd From: https://www.cnblogs.com/ZYL-FS/p/17759138.html