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

蓝桥杯决赛04——串口进阶

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

蓝桥杯决赛04——串口进阶

有了上一节的基础,我们已经能够通过串口发送或者接受一个字符,但是在比赛中肯定不会只让你仅仅发送接受一个字符,所以这一篇就介绍一下如何一次接受或者是发送多个字符。

1.接收

在比赛中通常有这样的需求,当上位机发送一定的字符串后,单片机开始向上位机发送数据,因此我们需要实现的是,接受一串字符串,并进行判断,然后再执行一定的操作,我们先看一下代码。

unsigned char code passwsd[] = "AAASSS";
	if(RI){
		  	RI = 0;
			if(passwsd[i] == SBUF ) i++;			 	
			else i = 0;	
	}
 	if(i >=6 ) {	
	send(word, strlen(word)); // 发送字符串的函数,下面会介绍
	  i = 0;	}

应该很容易看懂,判断流程:
1. 接受到第一位数据,判断是否正确,如果正确开始判断下一位,如果不正确重新从第一位开始判断
2. 开始判断第二位数据,和第一位数据的判断方式相同
3. 如果每一位都正确,那么不就是实现了吗,然后执行相关的操作。

2.接收

其实和发送的流程一样,每一次发送一位数据,那么一个字符串分成一位位一位位的发送就行了。

void send(unsigned char *dat,unsigned int len){
		while(len--){
		SBUF = *dat;
		while(!TI);
	   	dat++;
		}
}

这里需要考察一下c语言学的好不好, 传入的是字符串的首地址,和字符串的长度,dat++ 表示指向下一个字节的地址,然后通过以上的代码我们是不是就实现了发送一定长度的字符串对吧。

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

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

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