CH571F使用Notify发送数据,如果才能知道发送完成?

通过peripheralChar4Notify发送了第1包数据,什么时候才能发送第2包?也就是我想知道第1包数据什么时候发送成功?

不想通过获取peripheralChar4Notify函数返回值的方法来确认,

Noti本身是没有返回值的,从协议层面来说。所以需要确保对面接收到数据有两种方式。第一使用应用层的应答,例如noti主机收到后,主机回复一包数据给从机,这是自定义应答的方式。第二是使用indication,这是协议层面有应答的方式。

既然noti本身没有应答,那只能从本身协议层面入手,BLE本身是可靠传输,并且提供接口给你用,只需要确保数据成功传入到这个接口后,在蓝牙未断开时,数据一定会通过底层传输出去。这个接口就是你调用的noti发送函数接口。

至于你说的不想通过返回值确认,那建议使用indication或者自定义协议。

蓝牙BLE从机Peripheral讲解二(句柄指示\确认(Handle Value Indication\Confirmation)) - SweetTea_lllpc - 博客园


您好,谢谢解答!

因为是不重要的信息,不需要应答的数据,我也不希望通过indication协议层应答,这样会降低传输效率

我希望协议栈有一个通知,就是Noti从底层发送出去了,通知一下应用层,我应用层好写程序继续给下一包数据,这样才能做到连续传输,高效率传输



协议层面不存在这个接口,并且你说的这个接口跟直接查看noti发送函数的返回值并没有区别。

底层给你缓冲区,noti的返回值可以根据返回值判断缓冲区是否已满进而判断是否继续填入数据。


只有登录才能回复,可以选择微信账号登录