分段传输网页源码
This commit is contained in:
parent
988fbae7f8
commit
d3f58b4768
@ -72,33 +72,35 @@ static void send_chunk_end(uint8_t sn)
|
||||
#define CHUNK_SIZE 512
|
||||
|
||||
// 处理配置页面请求
|
||||
static void handle_config_page(uint8_t sn)
|
||||
static void handle_index_page(uint8_t sn)
|
||||
{
|
||||
char buffer[CHUNK_SIZE];
|
||||
|
||||
// 先将完整的HTML内容格式化到一个临时缓冲区
|
||||
char full_page[1024*15]; // 确保足够大
|
||||
int total_len = sprintf(full_page, index_html,0,
|
||||
gWIZNETINFO.mac[0], gWIZNETINFO.mac[1], gWIZNETINFO.mac[2],
|
||||
gWIZNETINFO.mac[3], gWIZNETINFO.mac[4], gWIZNETINFO.mac[5],
|
||||
gWIZNETINFO.ip[0], gWIZNETINFO.ip[1], gWIZNETINFO.ip[2], gWIZNETINFO.ip[3],
|
||||
gWIZNETINFO.sn[0], gWIZNETINFO.sn[1], gWIZNETINFO.sn[2], gWIZNETINFO.sn[3],
|
||||
gWIZNETINFO.gw[0], gWIZNETINFO.gw[1], gWIZNETINFO.gw[2], gWIZNETINFO.gw[3]);
|
||||
|
||||
// 发送响应头
|
||||
// 发送分块传输的响应头
|
||||
send_chunked_response_header(sn);
|
||||
|
||||
// 分块发送内容
|
||||
// 分段发送HTML内容
|
||||
// const int CHUNK_SIZE = 512; // 每个块的大小
|
||||
int total_len = strlen(index_html);
|
||||
int sent = 0;
|
||||
|
||||
while (sent < total_len) {
|
||||
int chunk_len = (total_len - sent) > CHUNK_SIZE ? CHUNK_SIZE : (total_len - sent);
|
||||
memcpy(buffer, full_page + sent, chunk_len);
|
||||
send_chunk(sn, buffer, chunk_len);
|
||||
// 计算当前块的大小
|
||||
int chunk_len = ((total_len - sent) > CHUNK_SIZE) ?
|
||||
CHUNK_SIZE : (total_len - sent);
|
||||
|
||||
// 发送数据块
|
||||
send_chunk(sn, index_html + sent, chunk_len);
|
||||
|
||||
sent += chunk_len;
|
||||
}
|
||||
|
||||
// 发送结束块
|
||||
send_chunk_end(sn);
|
||||
|
||||
// 等待数据发送完成
|
||||
HAL_Delay(1);
|
||||
|
||||
// 关闭连接
|
||||
disconnect(sn);
|
||||
}
|
||||
|
||||
// 解析并更新网络配置
|
||||
@ -164,7 +166,7 @@ typedef struct {
|
||||
// 4.泵速度,2个字节,每个泵的速度占用一个字节,表示当前泵设定的速度百分比
|
||||
// 5.气泡感应器读值,1表示监测到气泡,0表示没有气泡,共1个字节
|
||||
// 6.急停按键状态,1个字节,1为按下,0为正常。
|
||||
// 7.错误码1个字节,用于监控当前系统总体状态,如通信异常、控制异常等等,具体错误码待定
|
||||
// 7.错误码1个字节,用于监控当前系统总体状态,如通信异常、控制异常等<EFBFBD><EFBFBD>,具体错误码待定
|
||||
// 8.初始化状态,1个字节, 0表示初始化执行中,1表示初始化执行成功,2表示初始化执行失败。
|
||||
typedef struct {
|
||||
uint8_t deviceStatus; // 下挂设备状态
|
||||
@ -316,7 +318,7 @@ void http_server_task(void)
|
||||
handle_netconfig_request(HTTP_SERVER_SOCKET);
|
||||
}
|
||||
else {
|
||||
handle_config_page(HTTP_SERVER_SOCKET);
|
||||
handle_index_page(HTTP_SERVER_SOCKET);
|
||||
}
|
||||
}
|
||||
else if(req.method == HTTP_POST && strcmp(req.uri, "/config") == 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user