分段传输网页源码
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
|
#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);
|
send_chunked_response_header(sn);
|
||||||
|
|
||||||
// 分块发送内容
|
// 分段发送HTML内容
|
||||||
|
// const int CHUNK_SIZE = 512; // 每个块的大小
|
||||||
|
int total_len = strlen(index_html);
|
||||||
int sent = 0;
|
int sent = 0;
|
||||||
|
|
||||||
while (sent < total_len) {
|
while (sent < total_len) {
|
||||||
int chunk_len = (total_len - sent) > CHUNK_SIZE ? CHUNK_SIZE : (total_len - sent);
|
// 计算当前块的大小
|
||||||
memcpy(buffer, full_page + sent, chunk_len);
|
int chunk_len = ((total_len - sent) > CHUNK_SIZE) ?
|
||||||
send_chunk(sn, buffer, chunk_len);
|
CHUNK_SIZE : (total_len - sent);
|
||||||
|
|
||||||
|
// 发送数据块
|
||||||
|
send_chunk(sn, index_html + sent, chunk_len);
|
||||||
|
|
||||||
sent += chunk_len;
|
sent += chunk_len;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 发送结束块
|
// 发送结束块
|
||||||
send_chunk_end(sn);
|
send_chunk_end(sn);
|
||||||
|
|
||||||
|
// 等待数据发送完成
|
||||||
|
HAL_Delay(1);
|
||||||
|
|
||||||
|
// 关闭连接
|
||||||
|
disconnect(sn);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 解析并更新网络配置
|
// 解析并更新网络配置
|
||||||
@ -164,7 +166,7 @@ typedef struct {
|
|||||||
// 4.泵速度,2个字节,每个泵的速度占用一个字节,表示当前泵设定的速度百分比
|
// 4.泵速度,2个字节,每个泵的速度占用一个字节,表示当前泵设定的速度百分比
|
||||||
// 5.气泡感应器读值,1表示监测到气泡,0表示没有气泡,共1个字节
|
// 5.气泡感应器读值,1表示监测到气泡,0表示没有气泡,共1个字节
|
||||||
// 6.急停按键状态,1个字节,1为按下,0为正常。
|
// 6.急停按键状态,1个字节,1为按下,0为正常。
|
||||||
// 7.错误码1个字节,用于监控当前系统总体状态,如通信异常、控制异常等等,具体错误码待定
|
// 7.错误码1个字节,用于监控当前系统总体状态,如通信异常、控制异常等<EFBFBD><EFBFBD>,具体错误码待定
|
||||||
// 8.初始化状态,1个字节, 0表示初始化执行中,1表示初始化执行成功,2表示初始化执行失败。
|
// 8.初始化状态,1个字节, 0表示初始化执行中,1表示初始化执行成功,2表示初始化执行失败。
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint8_t deviceStatus; // 下挂设备状态
|
uint8_t deviceStatus; // 下挂设备状态
|
||||||
@ -316,7 +318,7 @@ void http_server_task(void)
|
|||||||
handle_netconfig_request(HTTP_SERVER_SOCKET);
|
handle_netconfig_request(HTTP_SERVER_SOCKET);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
handle_config_page(HTTP_SERVER_SOCKET);
|
handle_index_page(HTTP_SERVER_SOCKET);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(req.method == HTTP_POST && strcmp(req.uri, "/config") == 0) {
|
else if(req.method == HTTP_POST && strcmp(req.uri, "/config") == 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user