00:00 / 02:46
连播
清屏
智能
倍速
点赞17
BLE通信通知与指示区别 加我V hezkz17可申请加入数字音频系统研究开发交流答疑群课题组领取ble项目资料 “Indicate” 可以用来实现“发送并等待确认”,但它本身并不直接携带来自APP的应用层应答内容。 这需要配合其他机制。 下面为你详细拆解一下: 1. GATT 的 Notify 和 Indicate 的核心区别 首先要理解 Notify 和 Indicate 的本质: · Notify(通知): 设备端(Server/Peripheral)向 客户端(Client/Central,通常是APP)发送数据。这是一种“发了就忘”的不可靠传输,客户端不返回任何确认。速度快,但数据可能丢失。 · Indicate(指示): 设备端向客户端发送数据。这是一种可靠传输,客户端在协议栈层面必须返回一个确认(Confirmation) 给设备端,设备端才能知道数据已被对方接收。 所以,从“确保数据送达”这个角度看,Indicate 是合适的。 2. 你的需求:等待APP的“应答” 这里的关键在于区分两种“确认”: 1. 链路层/协议栈确认: Indicate 自带的确认,只代表数据被对方设备的蓝牙协议栈收到了。 2. 应用层确认/应答: 这是你业务逻辑的一部分。比如,你发送一条指令 {“cmd”: “set_led”, “color”: “red”},你期望APP在正确处理这条指令后,回复你一条业务消息 {“result”: “success”} 或 {“status”: “led_changed”}。 Indicate 只能完成第1种确认,无法直接提供第2种应答内容。 3. 如何实现“发送数据并等待应用层应答”? 这是一个经典的请求-响应模式,在BLE中通常有两种实现方式: 方案一:Indicate + 独立的Write特征(最常用、最清晰) 这是最推荐的做法,职责分离,逻辑清晰。 · 设备 → APP (发送请求): 设备通过一个 Characteristic A(属性为 Indicate) 向APP发送指令或数据。Indicate保证了指令一定送达APP。 · APP →设备 (发送应答): APP在收到指令并处理完成后,通过向另一个 Characteristic B(属性为 Write 或 Write without res
00:00 / 04:40
连播
清屏
智能
倍速
点赞0
00:00 / 00:18
连播
清屏
智能
倍速
点赞28
00:00 / 00:53
连播
清屏
智能
倍速
点赞NaN
00:00 / 00:37
连播
清屏
智能
倍速
点赞6848
00:00 / 00:51
连播
清屏
智能
倍速
点赞0
00:00 / 01:04
连播
清屏
智能
倍速
点赞48
00:00 / 02:02
连播
清屏
智能
倍速
点赞25