协调器上每次按键按下,会向一个终端发送一个数据包,每个数据包有120个字节左右,数据包发送时会被分包。现在遇到的问题是,如果我按的非常快,协调器会堵死,数据包完全无法发出去。出现这种堵塞时,我仿真暂停,发现是 AF_DataRequest 内的 apsfSendFragmented 函数申请内存一直失败。由于apsfSendFragmented 没有开源,没办反进一步跟踪。
所以我想请教一下,AF_DataRequest 发送数据时,会不会建立一个消息队列,把那些来不及发送的消息放进去?
如果有这样一个队列,那我每次调用AF_DataRequest 之前,都查看一下队列中的消息数量,如果超过3条消息等待发送,我就不再调用AF_DataRequest ,这样虽然快速发送时会有包丢掉,但至少不会造成堵死完全无法发送。