标题: 求个单片机串口接收多字符串,很急急 [打印本页]

作者: lify5288    时间: 2017-11-23 18:00
标题: 求个单片机串口接收多字符串,很急急
PC向单片机随意发送一条字符串,单片机收到后将收到的字符串临时保存下来,等到串口收到第二条字符串后进行比对,如果不一样,就把第一条给反回给pc,要用串口一和定时器二做波特率,我用的芯片是stc15w4k56s4。。。
作者: 小潘哥    时间: 2017-11-23 18:00
定义两个较长的字符缓存,比如uchar str1[50],uchar str2[50],把第一次接收到的放在str1里,第二次接收到的放发str2里,然后在接收完第二个字符串后,用for循环逐个对str1和str2进行比较就好了,碰到不一样的就break,定义一个变量来作为标志位,如果一样标志位为1,不一样标志位为0,不一样返回str1就好了。对了完成一轮后记得清零str1和str2哈
作者: lify5288    时间: 2017-11-24 00:44
小潘哥 发表于 2017-11-23 20:29
定义两个较长的字符缓存,比如uchar str1[50],uchar str2[50],把第一次接收到的放在str1里,第二次接收到 ...

搞通了,但又有个新的问题,想请教下,自己设置数据起使位,和结束位,因为不确定每次的数据长度,那么我想把起使位和结束位跳过不发送,我是这样写的for(i=0;i<s;i++)s是接收到的字符长度,我把s-1它只能把最后一个结束符不发出出,但起使符还是发,我把i=0改为i=1起使还有会发出来数据也不对



作者: jiangmaple    时间: 2017-11-24 08:46
通常我做串口通讯会设置:起始符+数据长度+数据+checksum+结束符
在串口接收中断中,做状态机,通过状态机判断起始符、数据长度、数据、checksum、结束符
这样后期数据处理就比较方便





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1