当前位置: 首页 > news >正文

WIFI 应用层代码

1.0 定义枚举类型

typedef enum
{WIFI_COMM_WAIT,			// AT 等待命令WIFI_COMM_OK,			// AT 命令完成WIFI_COMM_FALL,			// AT 命令失败
}WifiCommState_t;

 注:该枚举类型的作用是,定义三个成员变量,分别表示AT指令等待发送,AT指令接受成功,AT指令接受失败。


2.0 创建结构体函数

/*创建结构体类型的函数
*/
static WifiCommState_t AtCmdHandle(char *cmd, char *rsp, uint32_t timeoutMs)
{static WifiCommState_t s_commState = WIFI_COMM_OK;static uint64_t s_sendCmdTime;char *recvStrBuf;if (s_commState != WIFI_COMM_WAIT){if (cmd != NULL){SendWifiModuleStr(cmd);}s_commState = WIFI_COMM_WAIT;s_sendCmdTime = GetSysRunTime();}else{if ((GetSysRunTime() - s_sendCmdTime) < timeoutMs){recvStrBuf = RecvWifiModuleStr();if (strstr(recvStrBuf, rsp) != NULL){s_commState = WIFI_COMM_OK;}}else{s_commState = WIFI_COMM_FALL;}}return s_commState;
}

注:这个函数是一个结构体函数,表示AT指令的句柄,有三个参数前两个参数都表示char 类型的指针变量,第一个参数表示发送的AT指令,第二个参数表示返回的值,第三个参数表示超时时间定义了两个静态局部变量第一个局部变量初始值赋值为AT指令发送完成,第二个变量用于记录发射红AT指令的时间,第三个变量获取了一个char * 类型的指针变量,用于存储返回的字符数据,使用 if 语句对指令的状态进行判断如果当前的指令状态不处于等待的状态就再次使用 if 判断当前的指令是否为空如果为空则发送WIFI模组的字符命令(AT指令),否则状态赋值为等待状态,同时获取当前系统时间...


3.0 创建结构体

typedef struct
{// 需要发送的AT指令char *cmd;// 期望的应答数据char *rsp;// 得到应答的超时时间uint32_t timeoutMs;
}AtCmdInfo_t;

注:结构体的作用如注释所示


4.0 模组初始化命令集

/*模组初始化命令集
*/
static AtCmdInfo_t g_checkModuleCmdTable[] = 
{{.cmd = "AT+RST\r\n",	// 软件复位.rsp = "ready",.timeoutMs = 3000,},{.cmd = NULL,			// 等待.rsp = "XXXXX",.timeoutMs = 1000,},{.cmd = "ATE0\r\n",        // 关闭回显.rsp = "OK",.timeoutMs = 500,},{.cmd = "AT+CWMODE=1\r\n",      // AT+CWMODE 命令用于设置 Wi-Fi 模块的工作模式。.rsp = "OK",.timeoutMs = 500,	},{.cmd = "AT+CWRECONNCFG=1,0\r\n",  // 设置 Wi-Fi 重连,重连间隔1S,无次数限制.rsp = "OK",.timeoutMs = 100,	},
};

软件复位

 乐鑫网址:基础 AT 命令集 - ESP32-C2 - — ESP-AT 用户指南 latest 文档

开启和关闭回显对应的AT指令集


5.0 创建枚举类型

typedef enum
{AT_RST,AT_RST_DELAY,AT_E0,AT_CWMODE_1,AT_CWRECONNCFG,
}AtCheckModuleCmdType;

...


 


http://www.mrgr.cn/news/7720.html

相关文章:

  • 三数之和及unordered_set和set的使用区别
  • Python 如何使用正则表达式进行复杂文本处理
  • 【Docker】以思源笔记为例,谈谈什么是端到端加密
  • C#面:ASP.NET MVC 中如何用表单认证?
  • pycharm远程调试服务器代码提示,运行‘test’时出错,illegal char at index
  • 开源大模型LLaMA架构介绍
  • 【python】调用openAI api接口批量处理excel中的文本
  • kickstart自动安装脚本制作详解
  • 自来水厂供水监控的串口服务器应用
  • mysql在字符串列建立索引示例
  • 怎样更改电脑的MAC地址?
  • Qt QLabel点击事件
  • Go语言标准错误error解析
  • Git和TortoiseSVN忽略的使用
  • Java RPC、Go RPC、Node RPC、Python RPC 之间的互相调用
  • git push 更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支
  • 双系统安装:一键解锁电脑新境界,Windows与Linux并肩作战!
  • UneMeta创始人讲述自己在Web3+IP领域创业的心路历程
  • 【HarmonyOS NEXT星河版开发实战】灯泡定时开关
  • 科技在日常生活中的革新