硬件基本完成

This commit is contained in:
2026-05-01 21:34:10 +08:00
parent df5b05e936
commit 5a31ff2179
14 changed files with 1005 additions and 439 deletions
+41 -8
View File
@@ -183,6 +183,8 @@ uint8_t ESP8266_SendEncryptedData(const char* encrypted_data)
char http_request[1024];
char cmd_buffer[32];
uint32_t content_length = strlen(encrypted_data);
char* response;
uint8_t send_ok = 0;
if (ESP8266_CheckConnection() != ESP8266_SUCCESS) {
DEBUG_INFO("[ESP8266] HTTP connection not ready, reconnecting...");
@@ -229,16 +231,47 @@ uint8_t ESP8266_SendEncryptedData(const char* encrypted_data)
// 发送HTTP请求
Serial_SendString(http_request);
Delay_ms(100);
// 不等待SEND OK,直接返回成功
DEBUG_OK("[ESP8266] Data sent");
return ESP8266_SUCCESS;
break;
}
Delay_ms(10);
}
DEBUG_ERROR("[ESP8266] No '>' prompt");
if (Get_Time_ms() - start_time >= 2000 && strstr(Serial_GetRxBuffer(), ">") == NULL) {
DEBUG_ERROR("[ESP8266] No '>' prompt");
return ESP8266_FAIL;
}
start_time = Get_Time_ms();
while(Get_Time_ms() - start_time < 8000) {
response = Serial_GetRxBuffer();
if (strstr(response, "SEND FAIL") != NULL || strstr(response, "ERROR") != NULL) {
DEBUG_ERROR("[ESP8266] POST send failed");
return ESP8266_FAIL;
}
if (strstr(response, "SEND OK") != NULL) {
send_ok = 1;
}
if (send_ok && strstr(response, "HTTP/1.1 200") != NULL &&
strstr(response, "\"success\":true") != NULL) {
DEBUG_OK("[ESP8266] POST accepted by server");
return ESP8266_SUCCESS;
}
if (strstr(response, "HTTP/1.1 401") != NULL ||
strstr(response, "HTTP/1.1 400") != NULL ||
strstr(response, "HTTP/1.1 413") != NULL ||
strstr(response, "HTTP/1.1 500") != NULL ||
strstr(response, "\"success\":false") != NULL) {
DEBUG_PRINT("[ESP8266] POST rejected: %s\r\n", response);
return ESP8266_FAIL;
}
Delay_ms(10);
}
DEBUG_PRINT("[ESP8266] POST response timeout: %s\r\n", Serial_GetRxBuffer());
return ESP8266_FAIL;
}
@@ -450,9 +483,9 @@ uint8_t ESP8266_HttpGet(const char* path, char* response_buffer, uint16_t buffer
body_len = strlen(body_start);
}
// 5. 如果数据完整或超时,复制到缓冲区
// 5. 如果服务端给了Content-Length,必须收完整;否则才使用超时兜底
if ((found_header && body_len >= content_length) ||
(Get_Time_ms() - start_time > 3000 && body_len > 0)) {
(!found_header && Get_Time_ms() - start_time > 3000 && body_len > 0)) {
if (body_len >= buffer_size) {
body_len = buffer_size - 1;
}