小视频解析网站怎么做桂林市教科所
2026/1/22 1:25:32 网站建设 项目流程
小视频解析网站怎么做,桂林市教科所,尼尔的h版是那个网站做的,网站建设服务器软件一、前期配置 参考#xff1a; https://blog.csdn.net/weixin_44386927/article/details/155891583 的配置。 二、代码部分 1、定义部分 1、串口的初始化参考之前的配置。#define AP_SSID ESP01S_AP // AP模式的WiFi名称 #define AP_PWD …一、前期配置参考https://blog.csdn.net/weixin_44386927/article/details/155891583的配置。二、代码部分1、定义部分1、串口的初始化参考之前的配置。#defineAP_SSIDESP01S_AP// AP模式的WiFi名称#defineAP_PWD12345678// AP模式的WiFi密码至少8位#defineAP_CHANNEL6// AP信道1-13#defineAP_ENCRYPT3// 加密方式3WPA2_PSK推荐#defineTCP_SERVER_PORT8080typedefstruct{uint8_tconn_id;// 数据发送方的conn_iduint16_tdata_len;// 原始数据长度chardata_content[UART_RX_BUF_SIZE];// 原始数据内容uint8_tparse_ok;// 解析成功标记}IPD_Data_Proc_t;externuint8_tESP01_Send_To_Client(uint8_tconn_id,constchar*proc_data);externvoidESP01_Parse_IPD_Data(constchar*ipd_str,IPD_Data_Proc_t*ipd_proc);2、函数部分/** * brief 去除字符串首尾空白符\r\n/空格/制表符 */voidtrim_whitespace(char*str){if(strNULL||*str\0)return;// 去除开头空白符char*startstr;while(*start!\0isspace((unsignedchar)*start))start;// 去除结尾空白符char*endstrstrlen(str)-1;while(endstartisspace((unsignedchar)*end))end--;*(end1)\0;// 移动到原字符串开头memmove(str,start,strlen(start)1);}/** * brief 解析ESP01S的IPD数据兼容首尾\r\n提取conn_id和内容 */voidESP01_Parse_IPD_Data(constchar*ipd_str,IPD_Data_Proc_t*ipd_proc){memset(ipd_proc,0,sizeof(IPD_Data_Proc_t));ipd_proc-parse_ok0;// 空数据校验if(ipd_strNULL||strlen(ipd_str)0)return;// 去除首尾空白符处理\r\nIPD...\r\nchartemp_buf[128]{0};strncpy(temp_buf,ipd_str,sizeof(temp_buf)-1);trim_whitespace(temp_buf);// 校验是否为IPD格式if(strncmp(temp_buf,IPD,,5)!0)return;// 解析conn_idIPD后的第一个数字constchar*ptemp_buf5;charid_str[4]{0};inti0;while(*p!,*p!\0)id_str[i]*p;ipd_proc-conn_idatoi(id_str);p;// 跳过逗号// 解析数据长度charlen_str[8]{0};i0;while(*p!:*p!\0)len_str[i]*p;ipd_proc-data_lenatoi(len_str);p;// 跳过冒号// 解析原始数据内容if(ipd_proc-data_len0ipd_proc-data_len64){strncpy(ipd_proc-data_content,p,ipd_proc-data_len);ipd_proc-data_content[ipd_proc-data_len]\0;ipd_proc-parse_ok1;}}/** * brief 向指定conn_id的客户端回传处理后的数据 */uint8_tESP01_Send_To_Client(uint8_tconn_id,constchar*proc_data){if(proc_dataNULL||strlen(proc_data)0){printf(❌ 回传数据为空\r\n);return0;}uint16_tproc_lenstrlen(proc_data);// 步骤1发送ATCIPSEND指令指定ID和长度charsend_cmd[64]{0};snprintf(send_cmd,sizeof(send_cmd),ATCIPSEND%d,%d\r\n,conn_id,proc_len);if(!ESP01_SendATCmd(send_cmd,,ERROR,1000)){printf(❌ ID%dATCIPSEND指令失败\r\n,conn_id);return0;}// 步骤2发送处理后的数据纯数据无\r\nHAL_UART_Transmit(huart2,(uint8_t*)proc_data,proc_len,100);osDelay(20);// 确保数据发送完成return1;}3、任务部分voidStartTask02(void*argument){ESP01_UART_Data_t rx_data{0};charcmd_buf[USART1_DMA_BUF_SIZE]{0};charat_cmd[128]{0};printf(串口1调试指令接收任务已启动支持指令\r\n);printf(1. LED_ON - 点亮LED\r\n);printf(2. LED_OFF - 关闭LED\r\n);printf(3. ESP_ATAT - 配置ESP01并开启\r\n);while(1){.....前面省略参考之前的。elseif(strncmp(cmd_buf,ESP_AT,7)0){// 提取AT指令去掉前?ESP_AT得到真正的AT指令?strncpy(at_cmd,cmd_buf7,sizeof(at_cmd)-1);printf(手动发AT指令给ESP01%s\r\n,at_cmd);if(strcmp(at_cmd,AP)0){HAL_UART_Transmit(huart2,(uint8_t*),3,100);osDelay(1000);if(!ESP01_SendATCmd(AT,OK,ERROR,AT_CMD_TIMEOUT)){printf(AT失败\r\n);}// 2. 切换到AP模式CWMODE2仅AP3APSTAif(!ESP01_SendATCmd(ATCWMODE2,OK,ERROR,AT_CMD_TIMEOUT)){printf(ATCWMODE2失败\r\n);}ESP01_SendATCmd(ATRST,READY,ERROR,2000);osDelay(1500);// 等待重启完成至少1秒if(!ESP01_SendATCmd(AT,OK,ERROR,AT_CMD_TIMEOUT)){printf(重启后AT测试失败\r\n);}if(!ESP01_SendATCmd(ATCIPMUX1,OK,ERROR,AT_CMD_TIMEOUT)){printf(开启多路连接失败\r\n);}else{printf(多路连接模式已开启\r\n);}//配置AP参数SSID、密码、信道、加密方式//ATCWSAPESP01S_AP,12345678,11,3snprintf(at_cmd,sizeof(at_cmd),ATCWSAP\%s\,\%s\,%d,%d,AP_SSID,AP_PWD,AP_CHANNEL,AP_ENCRYPT);if(!ESP01_SendATCmd(at_cmd,OK,ERROR,AT_CMD_TIMEOUT)){printf(ATCWSAP配置AP参数失败\r\n);}//ATCIPMUX1 # 1多连接模式0单连接默认//ATCIPSERVER1,8080 # 1开启服务器8080监听端口//ATCIPSERVER? # 验证服务器状态返回CIPSERVER:1,8080即生效snprintf(at_cmd,sizeof(at_cmd),ATCIPSERVER1,%d,TCP_SERVER_PORT);if(!ESP01_SendATCmd(at_cmd,OK,ERROR,AT_CMD_TIMEOUT)){printf(ATCIPSERVER启动TCP服务器失败\r\n);}else{printf(AP模式TCP服务器已启动%d\r\n,TCP_SERVER_PORT);// 可选定时查询客户端连接状态flag_ap_on1;osThreadFlagsSet(myTask03Handle,0x01);// 通知myTask04开始检测连接状态}}}memset(rx_data,0,sizeof(rx_data));}}voidStartTask03(void*argument){ESP01_UART_Data_t rx_data{0};IPD_Data_Proc_t ipd_proc;while(1){if(osMessageQueueGet(myQueue02Handle,(void*)rx_data,NULL,5000)osOK){if(flag_ap_on1){// 1. 解析IPD数据提取conn_id和原始内容memset(ipd_proc,0,sizeof(ipd_proc));ESP01_Parse_IPD_Data((char*)rx_data.data,ipd_proc);if(ipd_proc.parse_ok0){memset(rx_data,0,sizeof(rx_data));continue;}if(strcmp(ipd_proc.data_content,)0){printf(look\n);HAL_UART_Transmit(huart2,(uint8_t*)ipd_proc.data_content,ipd_proc.data_len,100);osDelay(20);// 确保数据发送完成}ESP01_Send_To_Client(ipd_proc.conn_id,ipd_proc.data_content);}memset(rx_data,0,sizeof(rx_data));osDelay(100);}osDelay(100);}}注意1、初始化配置完后pc端即客户端要重新连接。效果如下

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询