This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC3200能否30ms接收一个数据包,要求实时接收

Other Parts Discussed in Thread: CC3200

最近有个数据采集的项目,CC3200工作在AP模式,设置为TCP Server,要求Client每隔30ms发送一个标记给CC3200, 并且这个标记必须尽快被CC3200接收(允许5ms左右的延时),自己修改了一下SDK的例程,Client每隔30ms发送一个数据包(30个字节左右),Server不是实时接收,而是两次接收相差了100ms左右,或者好几个数据同时接收到,这个问题有什么好的解决方案呢?

  • 你的客户端用的什么,通常客户端默认会把TCP Nagle算法打开,这样它会把几个小包组成一个大数据包才发送。

  • 我试过把CC3200作为客户端,笔记本作为Server,好像也是这样,笔记本的调试助手是有人物联网公司开发的调试助手

  • 如果是这样,你可以在电脑上用wireshark抓个包看看,看包发出来的时候是一个一个的发还是组合在一起发的。

  • 我曾经测试过Tranciver Mode下CC3200 PHY的极限发射和接收能力,有一个问题是NWP确实会将多个包缓存下来同时返回给应用层。
    当调用sl_Recv时,会连续读到多个数据包。
    测试方法:我的测试是每隔10ms发送端发送一个64字节的数据包,接收端在大循环里阻塞调用sl_Recv,会每隔20ms收到两个连续的64字节数据包,无论使用非阻塞或者超时模式,都没有办法每隔10ms收到一个数据包。这可能是NWP底层内部的缓冲机制吧,关于如何打破这个机制,没有找到相关的文档或者接口函数。