首页 > 解决方案 > 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();
   }
}

标签: gsmesp32gsmcomm

解决方案


连接可能会断开。您应该对其进行监控并尝试重新连接。您还应该使用带有 Range 标头的 HTTP Get 请求来恢复下载。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests#single_part_ranges


推荐阅读