硬件基本完成
This commit is contained in:
+41
-8
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user