蓝牙技术
直播中

lalajie

8年用户 1228经验值
擅长:模拟技术 存储技术
私信 关注
[问答]

PAwR-server端的rsp丢包是什么原因导致的?

我正在进行PAwR的调试,例程微调后性能测试可正常使用,目前想加入应用协议。我在server端是这么修改的:
1.在app_pawr_se_rsp_cb接口下不直接发送pawr_snd_se_rsp_central,而是压入应用处理队列;

2.加入应用处理逻辑,单独创建一个线程;
3.单独创建一个驱动线程,在应用处理完后,调用pawr_snd_se_rsp_central发送应答。


目前测试发现,在client和server刚上电时,可以保持一小段时间的双向通信,后面server回的rsp在client端就收不到了。开server端代码调试未发现异常,pawr_snd_se_rsp_central可返回成功。我在client的时间配置如下,实测应用处理时间是6ms,用户数据目前没有超过16字节,想问下是时序配置异常还是pawr_snd_se_rsp_central调用方式不正确。

回帖(1)

康桃花

2024-7-4 16:57:10
根据您提供的信息,我将尝试分析可能导致PAwR-server端rsp丢包的原因,并提供一些建议来解决这个问题。

1. 网络问题:首先,检查网络连接是否稳定。如果网络连接不稳定,可能会导致数据包丢失。确保服务器和客户端之间的网络连接正常。

2. 线程同步问题:由于您在服务器端创建了一个单独的应用处理线程和一个驱动线程,可能存在线程同步问题。请确保在应用处理线程和驱动线程之间正确地同步数据和状态。

3. 队列管理问题:您提到在app_pawr_se_rsp_cb接口下不直接发送pawr_snd_se_rsp_central,而是压入应用处理队列。请确保队列管理正确,没有出现队列溢出或数据丢失的情况。

4. 应用处理逻辑问题:检查应用处理逻辑是否有可能导致数据包丢失或延迟。例如,如果应用处理时间过长,可能会导致数据包在队列中等待时间过长,从而影响通信。

5. 客户端接收问题:检查客户端的接收逻辑是否正确。如果客户端的接收逻辑有问题,可能会导致无法正确接收服务器发送的rsp。

6. 时间配置问题:您提到在client的时间配置上可能存在问题。请检查客户端的时间配置,确保它与服务器端的时间配置相匹配,以避免由于时间差异导致的数据包丢失。

7. 调试和日志记录:在调试过程中,增加日志记录可以帮助您更好地了解问题所在。记录关键步骤和状态,以便在出现问题时能够快速定位问题。

8. 性能测试:在修改代码后,进行性能测试以确保修改没有引入新的问题。如果性能测试出现问题,可以尝试逐步回退修改,以找出导致问题的具体原因。

综上所述,要解决PAwR-server端rsp丢包的问题,您需要从多个方面进行排查和调试。希望这些建议能对您有所帮助。
举报

更多回帖

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