NXP MCU 技术william hill官网
直播中

哈哈哈

10年用户 785经验值
擅长:可编程逻辑
私信 关注
[问答]

通过HTTPS GET文件下载速度慢是怎么回事?

大家好。我将基于 ESP-WROOM-32 的开发板与 W5500 结合使用。我想下载一些文件存储在SD卡上,但我面临着速度很慢的事实。我设法在 22 分钟内下载了 3 MB。我不太明白为什么会这样,因为连接到同一网络的 PC 在大约 10 秒内下载了这个文件。

这是我的一些代码。下载请求GET函数:
代码:全选
void http_get_file() {
    esp_http_client_config_t config_get = {
        .url = "https://download.samplelib.com/wav/sample-15s.wav",
        .method = HTTP_METHOD_GET,
        .cert_pem = (const char *)certs_pem_start,
        .event_handler = client_event_get_handler};

    esp_http_client_handle_t client = esp_http_client_init(&config_get);
    esp_http_client_perform(client);
    esp_http_client_cleanup(client);
}

事件 GET 处理程序:
代码:全选
esp_err_t client_event_get_handler(esp_http_client_event_handle_t evt) {
    ESP_LOGI(TAG, "Opening file %s", file_wav);
    FILE *sd_f = fopen(file_wav, "a");
    if (sd_f == NULL) {
        ESP_LOGE(TAG, "Failed to open file for writing");
        return ESP_FAIL;
    }
    switch (evt->event_id) {
        case HTTP_EVENT_ON_DATA:
            fwrite(evt->data, 1, evt->data_len, sd_f);
            break;
        default:
            break;
    }
    fclose (sd_f);
    return ESP_OK;
}

最后我得到了正确的播放文件,但它太慢了。我使用 iperf 示例测试了最大速度并得到了 8.2 Mbits/sec 的结果。需要做哪些重要的配置来提高速度?或者也许值得改变方法?

更多回帖

发帖
×
20
完善资料,
赚取积分