中级会员
- 积分
- 277
- 金钱
- 277
- 注册时间
- 2023-5-29
- 在线时间
- 106 小时
|
1金钱
做ADC数据采集,1秒钟采集到的数据有至少3MB的数据量,用LWIP的UDP发送,实时传输,但是UDP超过1472字节后,发送不了,上位机不显示,所以我的想法是在大数据量的情况下:
1:采集到的数据存在内部sram中,开辟一个500KB的缓冲区,边采集边把数据存到缓冲区,边做数据分割成1472字节的小数据块,分块好后UDP直接发送出去,整个过程就是一个动态循环的过程。比如:采集到的数据存进缓冲区,缓冲区检测到存到1472个数据后,把这1472个数据组成一个新的数组块,然后UDP拿走发送到上位机,在处理1-1472这第一个数据块的时候,同时后面的采集数据依然在实时进行,当第2个1472数据块检测存满后也打包成新的数组给UDP发送,一直存到500k后又重头开始循环缓冲1s内还没缓冲完的数据。原理就是用一个小的缓冲区来循环缓冲大数据量的数据,给出多余的时间来做数据分块给UDP传输,当然缓冲区不能太小,不然还没发走就被覆盖了。不知道这样的思路可否行
2.采集到的数据放在外部SDRAM中,在H7系列外挂SDRAM,直接一片就32MB的存储空间,一次性采集完1s的数据全部存到SDRAM中,采集完了在慢慢把数据分快处理给UDP发送。
3:当然这种情况在1和2的基础中,采集到的数据存到外部SDRAM,存储空间足够大,但是我也是边存边做数据分快处理,也不用担心被覆盖,因为空间足够大,一次性可以存够,只是存储和分块处理,发送同时进行。
以上就是我想出来的3种思路,不知道有没有大神看看如何,因为UDP发送数据上位机接收不到,超过1472字节的数据包,边采集边分块的话时间来不及处理,实时性就降低了
|
|