栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

百问网7天物联网智能家居 学习心得 打卡第七天

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

百问网7天物联网智能家居 学习心得 打卡第七天

2022.3.27

主要讲的内容是:项目完善与总结回顾

基于上篇文章进行了代码改进添加了2向功能,利用串口手动输入WiFi账号和密码和优化展示ESP8266IP,代码段如下图。

1、设置上电后等待时间 如果在等待时间内按下按键,可输入账号和密码超时则跳出。

2、判断是否有按键按下

如果有按键按下,就马上获取数据首先获取WiFi账号

while循环获取字符,每次只能获取一个字符

getchar获取串口输入的字符,每次获取一个

定义char ch 来存放字符

while循环判定ch是否是r,一旦输入回车就判断我们输入完了

ch是单个数据,要把ch保存起来,定义 char ssid_buf[20]="NETGEAR"保存起来,默认的账号是NETGEAR,密码100ask.cq,

定义长度 char len  ssid_buf[len]=ch,每次长度+1    len++

在判断有按键按下时将ssid buf ,清空一下,不然输入账号时,如果字符少于7个就不会完全覆盖所以要将 ssid buf清空,memset(ssdi buf,0,20)

if(ch>“ ”)的意思是输入的如果是一些控制符,就给他过滤掉

接下来就是获取WiFi的密码操作和上面获取WiFi的账号基本一致

3、组合指令("AT+CWJAP="NETGEAR","100ask.cq"") 

利用strcat将账号密码拼接起来,再利用memcpy将账号密码传回去。

//添加功能1:支持手动输入WIFI账号和密码
void Key_Update_WIFI(char *cmd, uint16_t d_time)
{
	char ssid_buf[20] = "NETGEAR";
	char pwd_buf[20] = "100ask.cq";
	char wifi_cmd[50] = "AT+CWJAP="";
	
	char ch = 0;
	char len = 0;
	
	//1.设置等待时间
	HAL_Delay(d_time);
	
	//2.判断是否有按键
	if (Key_GetFlag()) 
	{
		//2.1获取WIFI账号
		printf("Please enter SSID:");
		
		memset(ssid_buf, 0, 20);
		while(ch != 'r') //判断是否输入完 
		{
			ch = getchar();    //获取输入的字符
			if(ch > ' ')
			{
				printf("%c",ch);
				ssid_buf[len] = ch;//保存输入
				len++;
			}
		}	
	//2.2获取WIFI密码
		ch = 0;
		len = 0;
		printf("rnPlease enter Password:");

		memset(pwd_buf, 0, 20);
		while(ch != 'r') //判断是否输入完 
		{
			ch = getchar();    //获取输入的字符
			if(ch > ' ')
			{
				printf("%c",ch);
				pwd_buf[len] = ch;//保存输入
				len++;
			}
		}	
	}
	printf("rn");
	
	//3.组合指令 ("AT+CWJAP="NETGEAR","100ask.cq"") 
	strcat(wifi_cmd, ssid_buf);
	strcat(wifi_cmd, "","");
	strcat(wifi_cmd, pwd_buf);
	strcat(wifi_cmd, """);

	memcpy(cmd, wifi_cmd, strlen(wifi_cmd));
}

功能2 优化ESP8266 IP  这段代码 自己C语言基础很差还没理解 ,理解后再更新上来。

//添加功能2:优化展示ESP8266 IP

void Show_IP(char *ip)
{
	char buf[256] = {0};
	char ip_buf[256] = {0};
	uint8_t len = 0;
	
	char *ip_offset;
	ip_offset = strstr(ip, "STAIP")+6;
	
	memcpy(buf, ip_offset, strlen(ip_offset));
	while(buf[len] != 'r')  
	{
		ip_buf[len] = buf[len];
		len++;
	}
	
	printf("ESP8266 IP: %srn", ip_buf);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/784583.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号