gsm - gsm模块和esp32的文件下载问题
问题描述
我正在尝试使用 tinygsm 库下载 1.4 mb 文件,为此我正在使用 FileDownload 示例。但是我的设备下载了 96,000 字节然后停止。调试程序后,我发现 client.connected() 条件变为假,这就是我无法进一步下载文件的原因。使用的硬件是 esp32 和 sim800c 模块。
我正在分享下面的代码片段,请指导我解决此问题。
TinyGsmClientSecure client(modemGSM);
if (client.connect(host, port)) {
SerialDebug.println("connected");
// Make a HTTP GET request:
SerialDebug.println("Performing HTTP GET request...");
client.print(String("GET ") + path + " HTTP/1.1\r\n");
client.print(String("Host: ") + host + "\r\n");
client.print("Connection: close\r\n\r\n");
client.println();
}else {
SerialDebug.println("connection failed");
return;
}
while (client.connected() && millis() - timeout < 10000L) {
while (client.available()) {
char c = client.read();
readBytes++;
if(readBytes % 1000 == 0)
SerialDebug.println(readBytes);
timeout = millis();
}
}
解决方案
连接可能会断开。您应该对其进行监控并尝试重新连接。您还应该使用带有 Range 标头的 HTTP Get 请求来恢复下载。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests#single_part_ranges
推荐阅读
- hadoop - 在 openstack 中安装 Hadoop
- c - 如何检查或更改 USLT (ID3) 中的编码?
- javascript - 如何解决承诺设置状态的反应
- vue.js - Nuxt - 返回根目录时如何保留存储状态(主页)
- java - Windows、Gradle 和 Cucumber 组合在生成报告时抛出 IOException
- excel-formula - 根据 Excel 中的累积和返回列号
- powershell - 检查 ADusers 的属性 export-csv 并包含 null
- c# - 未找到 CredDB.CEF
- javascript - Angular 6 - *ngFor:在 JSON 数据中附加选择选项
- mysql - Sql - 查询以获取表中的记录总数