用户手册提到“由于 UDP 模式下 CH395 无法提供流控,建议接收到的数据及时快速的读完,以免被后续的数据覆盖。”
1、用单个SOCKET作为UDP服务器。我采用中断接收数据,以最快的速度将数据接收下来,并放入自己创建的队列结构中,退出中断后再处理数据。但仍未能解决多个客户端的数据覆盖的问题,数据在CH395的缓冲区已被覆盖;
2、用多个SOCKET作为UDP服务器,数据手册说,只能采用不同的本地端口,这种方式下,可以解决多个客户端的数据覆盖问题,因为每个SOCKET采用各自的数据缓存区,但应用场景要求,UDP服务器需采用相同的端口。
3、以上两种方法,采用方法1,如果能解决多客户端的数据覆盖问题;采用方法2,如果能解决多个SOCKET使用相同的本地端口问题,均能满足我的应用需求,请各位帮忙指点一下。
问题思考: 既然用方法2能解决数据覆盖,说明UDP模式下CH395是有可能提供流控的,只需要把CH395把缓冲区设计成环形队列结构,看厂家能否优化芯片的固件,以满足更多应用需求。