打印
[STM32]

立创商城ATK_ESP8266模块atk_8266_wifista_test函数讲解

[复制链接]
946|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小乐Tzz|  楼主 | 2018-8-15 10:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
atk_8266_wifista_test函数
作用:ATK-ESP8266 WIFI STA 测试函数

/***********************************************************/
//ATK-ESP8266 WIFI STA 测试
//用于测试TCP/UDP 连接
//返回值:0,正常
//     其他,错误代码
u8 netpro=0;  //网络模式
u8 atk_8266_wifista_test(void)
{
  //u8 netpro=0; //网络模式
  u8 key;
  u8 timex=0;   
  u8 ipbuf[16];         //IP 缓存
  u8 *p;
  u16 t=999;        //加速第一次获取链接状态
  u8 res=0;
  u16 rlen=0;
  u8 constate=0;        //连接状态
  p=mymalloc(SRAMIN,32);              //申请 32字节内存
  atk_8266_send_cmd("AT+CWMODE=1","OK",50);    //设置 WIFI STA 模式
  delay_ms(1000); //设置连接到的WIFI网络名称/加密方式/密码,这几个参数需要根据您自己的路由
//器设置进行修改!!   
  sprintf((char*)p,"AT+CWJAP=\"%s\",\"%s\"",wifista_ssid,wifista_password);
//设置无线参数:ssid,密码
  atk_8266_send_cmd(p,"WIFI GOT IP",1000);           
//连接目标路由器
PRESTA:
  netpro|=atk_8266_netpro_sel(50,30,(u8*)ATK_ESP8266_CWMODE_TBL[0]);   
//选择网络模式
  if(netpro&0X02)   //UDP
  {
        LCD_Clear(WHITE);
        POINT_COLOR=RED;
        Show_Str_Mid(0,30,"ATK-ESP WIFI-STA  测试",16,240);   
        Show_Str(30,50,200,16,"正在配置 ATK-ESP 模块,请稍等...",12,0);
        if(atk_8266_ip_set("WIFI-STA 远端UDP IP设置",(u8*)ATK_ESP8266
_WORKMODE_TBL[netpro],(u8*)portnum,ipbuf))goto PRESTA;   
//IP 输入
sprintf((char*)p,"AT+CIPSTART=\"UDP\",\"%s\",%s",ipbuf,(u8*)portnu
m);      
//配置目标UDP 服务器
        delay_ms(200);
        atk_8266_send_cmd("AT+CIPMUX=0","OK",20);  //单链接模式
        delay_ms(200);
        LCD_Clear(WHITE);
        while(atk_8266_send_cmd(p,"OK",500));
  }
  else     //TCP
  {
    if(netpro&0X01)     //TCP Client 透传模式测试
    {
      LCD_Clear(WHITE);
      POINT_COLOR=RED;
      Show_Str_Mid(0,30,"ATK-ESP WIFI-STA  测试",16,240);   
      Show_Str(30,50,200,16,"正在配置ATK-ESP 模块,请稍等...",12,0);
      if(atk_8266_ip_set("WIFI-STA 远端 IP 设置",(u8*)ATK_ESP8266_WORK
MODE_TBL[netpro],(u8*)portnum,ipbuf))goto PRESTA;
           //IP 输入
      atk_8266_send_cmd("AT+CIPMUX=0","OK",20); //0:单连接,1:多连接
      sprintf((char*)p,"AT+CIPSTART=\"TCP\",\"%s\",%s",ipbuf,(u8*)portnum);      
//配置目标TCP 服务器
      while(atk_8266_send_cmd(p,"OK",200))
      {
          LCD_Clear(WHITE);           POINT_COLOR=RED;
          Show_Str_Mid(0,40,"WK_UP:返回重选",16,240);
          Show_Str(30,80,200,12,"ATK-ESP 连接TCP 失败",12,0);   
//连接失败     
          key=KEY_Scan(0);
          if(key==4)goto PRESTA;
      }   
      atk_8266_send_cmd("AT+CIPMODE=1","OK",200);        
//传输模式为:透传      
    }
    else          //TCP Server
    {
        LCD_Clear(WHITE);
        POINT_COLOR=RED;
        Show_Str_Mid(0,30,"ATK-ESP WIFI-STA  测试",16,240);   
        Show_Str(30,50,200,16,"正在配置 ATK-ESP 模块,请稍等...",12,0);
        atk_8266_send_cmd("AT+CIPMUX=1","OK",20);   
                  //0:单连接,1:多连接
        sprintf((char*)p,"AT+CIPSERVER=1,%s",(u8*)portnum);      
//开启 Server模式(0,关闭;1,打开),端口号为portnum
        atk_8266_send_cmd(p,"OK",50);      
    }
  }
      LCD_Clear(WHITE);
      POINT_COLOR=RED;
      Show_Str_Mid(0,30,"ATK-ESP WIFI-STA 测试",16,240);
      Show_Str(30,50,200,16,"正在配置ATK-ESP 模块,请稍等...",12,0);  
   
      LCD_Fill(30,50,239,50+12,WHITE);      //清除之前的显示
      Show_Str(30,50,200,16,"WK_UP:退出测试   KEY0:发送数据",12,0);
      LCD_Fill(30,80,239,80+12,WHITE);
      atk_8266_get_wanip(ipbuf);          //获取当前模块的  IP
      sprintf((char*)p,"IP 地址:%s 端口:%s",ipbuf,(u8*)portnum);
      Show_Str(30,65,200,12,p,12,0);        //显示 IP 地址和端口   
      Show_Str(30,80,200,12,"状态:",12,0);        //连接状态
      Show_Str(120,80,200,12,"模式:",12,0);      //连接状态
      Show_Str(30,100,200,12,"发送数据:",12,0);    //发送数据
      Show_Str(30,115,200,12,"接收数据:",12,0);    //接收数据
      atk_8266_wificonf_show(30,180,"请设置路由器无线参数
为:",(u8*)wifista_ssid,(u8*)wifista_encryption,(u8*)wifista_password);
      POINT_COLOR=BLUE;
Show_Str(120+30,80,200,12,(u8*)ATK_ESP8266_WORKMODE_TBL[netpr
o],12,0);                    //连接状态
      USART3_RX_STA=0;       while(1)
      {
        key=KEY_Scan(0);
        if(key==4)              //WK_UP 退出测试
     
        {   
          res=0;           
          atk_8266_quit_trans();        //退出透传
          atk_8266_send_cmd("AT+CIPMODE=0","OK",20);     
//关闭透传模式
          break;                           
        }
        else if(key==1)            //KEY0 发送数据   
        {
         
          if((netpro==3)||(netpro==2))      //UDP
          {
            sprintf((char*)p,"ATK-8266%s测
试%02d\r\n",ATK_ESP8266_WORKMODE_TBL[netpro],t/10
);//测试数据
            Show_Str(30+54,100,200,12,p,12,0);
            atk_8266_send_cmd("AT+CIPSEND=25","OK",200);   
//发送指定长度的数据
            delay_ms(200);
            atk_8266_send_data(p,"OK",100);  //发送指定长度的数据
            timex=100;
          }
          else if((netpro==1))   //TCP Client
          {
            atk_8266_quit_trans();
            atk_8266_send_cmd("AT+CIPSEND","OK",20);         
                          //开始透传            
            sprintf((char*)p,"ATK-8266%s测试%d\r\n",ATK_ESP8266_
WORKMODE_TBL[netpro],t/10);//测试数据
            Show_Str(30+54,100,200,12,p,12,0);
            u3_printf("%s",p);
            timex=100;
          }
          else      //TCP Server
          {
            sprintf((char*)p,"ATK-8266%s测试%02d\r\n",ATK_ESP8266
_WORKMODE_TBL[netpro],t/10);//测试数据
            Show_Str(30+54,100,200,12,p,12,0);
            atk_8266_send_cmd("AT+CIPSEND=0,25","OK",200);    //发送指定长度的数据
            delay_ms(200);
            atk_8266_send_data(p,"OK",100);  //发送指定长度的数据
            timex=100;
          }

        }else;
      
        if(timex)timex--;
        if(timex==1)LCD_Fill(30+54,100,239,112,WHITE);
        t++;
        delay_ms(10);
        if(USART3_RX_STA&0X8000)    //接收到一次数据了
        {   
          rlen=USART3_RX_STA&0X7FFF;   
//得到本次接收到的数据长度
          USART3_RX_BUF[rlen]=0;    //添加结束符   
          printf("%s",USART3_RX_BUF);  //发送到串口     
          sprintf((char*)p,"收到%d 字节,内容如下",rlen);//接收到的字节数   
          LCD_Fill(30+54,115,239,130,WHITE);
          POINT_COLOR=BRED;
          Show_Str(30+54,115,156,12,p,12,0);         
//显示接收到的数据长度
          POINT_COLOR=BLUE;
          LCD_Fill(30,130,239,319,WHITE);
          Show_Str(30,130,180,190,USART3_RX_BUF,12,0);
//显示接收到的数据   
          USART3_RX_STA=0;
          if(constate!=3)t=1000;     
//状态为还未连接,立即更新连接状态
          else t=0;                     
//状态为已经连接了,10秒后再检查
        }   
        if(t==1000)//连续10秒钟没有收到任何数据,检查连接是不是还存在.
        {
          constate=atk_8266_consta_check();//得到连接状态
          if(constate=='+')Show_Str(30+30,80,200,12,"连接成功",12,0);   
//连接状态
          else Show_Str(30+30,80,200,12,"连接失败",12,0);      
          t=0;
        }
        if((t%20)==0)LED0=!LED0;
        atk_8266_at_response(1);
      }   myfree(SRAMIN,p);    //释放内存   
  return res;     
}
/***********************************************************/

此部分代码比 apsta.c 少了很多,主要少了 AP 模式的配置,其他部分操作与 apsta.c 操作差不多。在此模式下只有 3种子模式(TCP 服务器,TCP 客户端和UDP),该模式下模块需连接到指定 WIFI 热点,代码里面我们是连接到我们的路由器,如需连接到客户自己的WIFI热点只需修改如下代码即可

/***********************************************************/
//WIFI STA 模式,设置要去连接的路由器无线参数,请根据你的路由器设置,自行修改.
const u8* wifista_ssid="ALIENTEK";      //路由器 SSID 号
const u8* wifista_encryption="wpawpa2_aes";  //wpa/wpa2 aes加密方式
const u8* wifista_password="15902020353";    //连接密码
/***********************************************************/
这里的配置,告诉模块,我们要连接的 WIFI 热点,SSID 为:ALIENTEK;加密方式为:WPA/WPA2_AES;密码为:15902020353。这几个红色的参数,得根据您的路由器设置正确才行


【立创商城】ESP8266EX 编带  https://item.szlcsc.com/79101.html

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

70

帖子

0

粉丝