提示:在上一篇中我们简单的完成了WIFI模块的STA模式,在此篇中我们将梳理WiFi的AP模式
AP模式:热点模式,是通过设置WiFi模块来产生一个热点,然后通过连接本热点,来达到在手机 上发送控制信息到单片机,可以使用于app控制单片机类的项目
前期准备:
提示:需要用到上一章所配置的串口二和串口三的代码配置和
esp8266.h、esp8266.c这两个文件里面的函数变量配置
,STM32F103C8T6主控,以及WiFi模块。
AP配置:
在这次的AP配置中,我们需要加入两个代码文件,先上代码。
ap.c
#include "ap.h"
#include "usart.h"
#include "esp8266.h"
#include "delay.h"
#include "stdio.h"
#include "string.h"
#include "stm32f10x.h"
/*
* 函数名:ESP8266_Inquire_ApIp
* 描述 :获取 F-ESP8266 的 AP IP
* 输入 :pApIp,存放 AP IP 的数组的首地址
* ucArrayLength,存放 AP IP 的数组的长度
* 返回 : 0,获取失败
* 1,获取成功
* 调用 :被外部调用
*/
uint8_t ESP8266_Inquire_ApIp ( char * pApIp, uint8_t ucArrayLength )
{
char uc;
char * pCh;
ESP8266_Send_AT_Cmd ( "AT+CIFSR", "OK", 0, 500 );
pCh = strstr ( ESP8266_Fram_Record_Struct .Data_RX_BUF, "APIP,\"" );
if ( pCh )
pCh += 6;
else
return 0;
for ( uc = 0; uc < ucArrayLength; uc ++ )
{
pApIp [ uc ] = * ( pCh + uc);
if ( pApIp [ uc ] == '\"' )
{
pApIp [ uc ] = '\0';
break;
}
}
return 1;
}
/*
* 函数名:ESP8266_StartOrShutServer
* 描述 :WF-ESP8266模块开启或关闭服务器模式
* 输入 :enumMode,开启/关闭
* :pPortNum,服务器端口号字符串
* :pTimeOver,服务器超时时间字符串,单位:秒
* 返回 : 1,操作成功
* 0,操作失败
* 调用 :被外部调用
*/
bool ESP8266_StartOrShutServer ( FunctionalState enumMode, char * pPortNum, char * pTimeOver )
{
char cCmd1 [120], cCmd2 [120];
if ( enumMode )
{
sprintf ( cCmd1, "AT+CIPSERVER=%d,%s", 1, pPortNum );
sprintf ( cCmd2, "AT+CIPSTO=%s", pTimeOver );
return ( ESP8266_Send_AT_Cmd ( cCmd1, "OK", 0, 500 ) &&
ESP8266_Send_AT_Cmd ( cCmd2, "OK", 0, 500 ) );
}
else
{
sprintf ( cCmd1, "AT+CIPSERVER=%d,%s", 0, pPortNum );
return ESP8266_Send_AT_Cmd ( cCmd1, "OK", 0, 500 );
}
}
/*
* 函数名:ESP8266_CIPAP
* 描述 :设置模块的 AP IP
* 输入 :pApIp,模块的 AP IP
* 返回 : 1,设置成功
* 0,设置失败
* 调用 :被外部调用
*/
uint8_t ESP8266_CIPAP ( char * pApIp )
{
char cCmd [ 30 ];
sprintf ( cCmd, "AT+CIPAP=\"%s\"", pApIp );
if ( ESP8266_Send_AT_Cmd ( cCmd, "OK", 0, 5000 ) )
return 1;
else
return 0;
}
/*
* 函数名:ESP8266_BuildAP
* 描述 :WF-ESP8266模块创建WiFi热点
* 输入 :pSSID,WiFi名称字符串
* :pPassWord&#x