13 lines
1.4 KiB
Markdown
13 lines
1.4 KiB
Markdown
|
|
1. OTA 下载的时候,为什么使用十六进制下载,读取 URC 事件?
|
|||
|
|
因为使用二进制下载的时候,经常会出现错误,并且会失败?然后最稳定传输的办法,是每次传输的时候,是分块,而且每次分块都要“删/建”http实例。推测原因是因为我们现在是直接传输文件的源代码,代码中含有了一些字符串可能和 AT指令重复,导致了 AT 模块在解释的时候出错。而使用 16 进制的方式,可以避免这个问题。因为十六进制直接把数据先转成了字符串,然后在设备端再把字符串转成数据,这样就不可能出现 AT的指令,从而减少了麻烦。
|
|||
|
|
2. OTA 下载的时候,为什么不用 AT 模块里 HTTPDLFILE 的指令?
|
|||
|
|
因为在测试中发现,使用 HTTPDLFILE,其实是下载到了 4G 模块内部,需要重新从模块内部转到存储卡,而且 4G 模块的存储较小,大概只有 40k,所以还需要分块来下载和转存,比较麻烦,于是最终使用了使用读取串口事件的模式。
|
|||
|
|
3. OTA 下载的时候,为什么不用 AT 模块里 HTTPREAD 的指令?
|
|||
|
|
因为之前测试发现,READ模式其实是需要多步:
|
|||
|
|
3.1. AT+MHTTPCREATE
|
|||
|
|
3.2. AT+MHTTPCFG
|
|||
|
|
3.3. AT+MHTTPREQUEST
|
|||
|
|
3.4. AT+MHTTPREAD
|
|||
|
|
它其实也是把数据下载到 4g 模块的缓存里,然后再从缓存里读取出来。所以也是比较繁琐的,还不如 HTTPDLFILE 简单。
|
|||
|
|
4.
|
|||
|
|
4.
|