大家好。我将基于 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 wri
ting");
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 的结果。需要做哪些重要的配置来提高速度?或者也许值得改变方法?