网络模块下载大文件问题

2019-08-20 16:39发布

我要做一个网络音乐播放器,有一个重要的功能就是用网络模块下载音乐,我采用的esp8266,下载的音乐文件大约5m,esp8266可以下载且串口输出,stm32边下载边写入SD卡。
现在遇到的问题:
1.我每接收到512byte就写入sd中,之后保存出来的文件只有几十KB,数据丢失严重。后来猜想可能是写入sd时丢失的
2.有没有什么办法,外接一个几M的缓存我直接定义一个大的变量数组,等全部下载完毕我再写如sd中。
3.综上所示,应该是先要把这么大的数据写入一个缓存中,全部下载结束后才能写入SD卡中。有什么好的解决方案
谢谢大家
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
正点原子
1楼-- · 2019-08-20 21:08
方法错误,你这种需求,应该在数据传输的可靠性上下功夫,而不是追求大缓存,给你再大的缓存也没有什么用的。。。  参考modbus写网络传输,实现可靠传输。
miss_lion
2楼-- · 2019-08-20 22:17
miss_lion
3楼-- · 2019-08-21 01:26
正点原子 发表于 2017-4-20 17:44
方法错误,你这种需求,应该在数据传输的可靠性上下功夫,而不是追求大缓存,给你再大的缓存也没有什么用的 ...

原子哥你没明白我的意思,不要这么快就给我选择了正确答案啊。我不是对esp8266二次开发啊,我是直接用AT指令啊
qq779089973
4楼-- · 2019-08-21 03:24
 精彩回答 2  元偷偷看……
miss_lion
5楼-- · 2019-08-21 05:07
qq779089973 发表于 2017-4-21 17:30
本来准备做这块的   感觉只有dma+fifo比较靠谱 同时在http请求头上试一下分段请求 不要一次请求一整个音乐 ...

esp8266的串口控制HTTP方式是不行的,因为超过一定量,超出他的缓存后,是下载不了的。另外音乐文件是完整的不可能手动分段。我现在采用TCP的方式,esp8266是可以输出的。但是可能是输出的太快,stm32接收不到
qq779089973
6楼-- · 2019-08-21 09:31
miss_lion 发表于 2017-4-24 13:24
esp8266的串口控制HTTP方式是不行的,因为超过一定量,超出他的缓存后,是下载不了的。另外音乐文件是完 ...

http是支持断点续传的  

一周热门 更多>