和记娱乐


网站导航

联系我们

和记娱乐

联系人: 

电 话:021-64057486

公司网址:http://www.happy123456789.com

   址:成都市松江区漕河泾松江新兴产业园区研展路丰产支路55号B座803室

邮编:201165


通信知识

您的当前位置: 和记娱乐主页 > 通信知识 >

关于单片机连接ESP8266模块截取其回显内容

发布日期:2019-10-13 09:52 来源:和记h88 发布人:和记娱乐 点击:

  1,首先,ESP使用串口,跟51单片机通信,控制端可以使用手机,但是,51单片机和手机不在一个档次,那么在51单片机上需要分析操作。

  2,ESP8266在接收或者发送数据时,会向串口发送回显内容,也就是提示信息,提示接收到了什么,发送了什么,所以,在单片机上做字符串的分析截取很重要,不然手机和单片机的通信质量大大下降,前期的wifi小车写项目的时候,这个问题困扰了我很久,后来进度过慢,我就折衷的使用了分析一个字符的方法,对小车进行控制,但是这样的处理方式很差。

  3,前阵子终于把wifi小车做完了,虽然只是简单的行进和lcd显示以及避障,但也不能继续做下去了,需要去学新东西了,在这之前我需要把ESP用的完善了才能学下一步的东西,也为以后的项目铺了。

  2,然后,在串口的中断服务函数中,用temp承接SBUF中的回显数据,再在中断服务函数中立即做判断处理,该存的存,该的跳过,而且在中断服务函数中不能做延时较长的动作,所以只能使用令人头疼的标志位。

  3,那么如何辨别什么时候是一整句的回显呢?因为回显并不回显\0,最多也只有\r\n(回车换行),那么如何判断什么时候开始接收一句话的第一个字符呢?我现在使用的方法是,把\n作为接收一句回显的开始,把\r作为接收一句回显的结束。这个过程通过设置标志位实现,较为简单。

  4,其次,现在比较重要的就是获取手机发来的数据,也就是+IPD,0,3:abc(0:客户连接号,3:字符串长度)这样的回显句子,需要截取下来,并存在单片机中,供其他函数使用,那么解析这个字符串就是在动态的过程中做的,所以时效性需要很高,需要立即分析完成并且处理完毕,不能先存下来再判断,因为没有字符串结束符,结束标志完全靠着:前面的3,也就是字符串长度来判断,这里连\r都没有用,只能动态的判断分析获取。

  //专门用来接收IPD和CIFSR,结束接收时要把Rev_Str_status置为无效,再次进入下面的循环,检测第一个字符

  Str_Ready = OK;//设置标志位,说明我已经接收到了一个整的字符串了,可以进行操作了。

  if(temp == :)//要是开始了:,那么后面开始接收字符长度为str_len的字符串长度

  6,由于是在动态过程中做的,那么判断和标志位是无可奈何的选择,这里就需要逻辑搞清楚,虽然的程序我也是比较晕的,但是凭着感觉写出来,在进行一点一点调试,最后还是能够稳定的实现的。算法方面我还需要加强。

  7,还有一个就是要善用sprintf它可以把你需要显示的数字为对应的字符串。注意:最好使用int型。

  //检测是否接收到了数据,供其他函数调用,如果接收到了数据,那么,就供其他函数提取全局变量Get_str

  Get_str_loc = 0;//清空一部分全局变量,以便下一次操作,Get_str要在外面函数接收完再清空

  //str:发送内容,str_len:发送的字节数,client_num:客户端连接号,注意:参数均为字符串形式!

  //经过一秒以后,查看是否有发送成功标志位,要是发送成功了,那么就置Send_flag为有效

  //专门用来接收IPD和CIFSR,结束接收时要把Rev_Str_status置为无效,再次进入下面的循环,检测第一个字符

  Str_Ready = OK;//设置标志位,说明我已经接收到了一个整的字符串了,可以进行操作了。

  if(temp == :)//要是开始了:,那么后面开始接收字符长度为str_len的字符串长度

  最后,还是有点缺陷的是,没有很好的完成的客户端,只能发送字符串给单片机,但是不能将单片机发来的数据用socket在手机上显示出来,是个弱项,但是socket通信还是需要好好学学,网络编程后续学习,对应客户端我也会尝试写出来。

      和记娱乐,和记h88,h88平台官网