文档库 最新最全的文档下载
当前位置:文档库 › STM32F103 WIFI程序 C语言

STM32F103 WIFI程序 C语言

STM32F103 WIFI程序 C语言
STM32F103 WIFI程序 C语言

AP模式

AP的SSID:AT+WAP=11BG,LAUVAN(SSID),CHI

AP的KEY::AT+WAKEY=WPA2PSK,AES,22222222

AP模式:AT+WMODE=AP

AP作服务器时的端口号:AT+NETP=TCP,SERVER,6000,192.168.1.56

AP的IP及网关:AT+LANN=192.168.1.1,255.255.255.0

透传模式:AT+ENTM

串口模式:

/****************************************************************************** ***********************

名称:变量定义

******************************************************************************* **********************/

volatile uint8UART3_RxBuf[UART3_RXBUF_SIZE];

volatile uint8UART3_TxBuf[UART3_TXBUF_SIZE];

volatile uint8UART3RxFlag;//接收标志

volatile uint16UART3_RxHead;//接收缓冲区读指针

volatile uint16UART3_RxEnd;//接收缓冲区指针

volatile uint8UART3_RxFullFlag;//接收缓冲区满标志

volatile uint8UART3_RxEmptyFlag;//接收缓冲区空标志

volatile uint8UART3TxFlag;//发送标志

volatile uint16UART3_TxHead;

volatile uint16UART3_TxEnd;

volatile uint8UART3_TxEmptyFlag;//发送缓冲区空标志

volatile uint8UART3OverTime;//超时时间

volatile uint8UART3OverFlag;//超时标志

volatile uint8UART3RxCompTime;//串口接收完成时间

volatile uint8UART3RxCompJudg;//串口接收完成判断

volatile uint8UART3RxCompFlag;//串口接收完成标志

volatile uint16Uart3OverTime;

//WIFI相关参数

volatile uint8WifiStatus=0;

volatile uint8IsWifiBusy;

volatile uint32Channel_Timer_Limit;//限时器

//volatile uint16Dog_IsWifiBusy=DOG_ISGPRSBUSY;

volatile uint16Dog_IsWifiBusy=0;

volatile uint8WifiSendBuf[512];

volatile uint8WifiRecBuf[512];

volatile uint8SetWifiParmFlag=0;

volatile uint8SetWifiUartParmFlag=0;

volatile uint8Send2BTime=0;

volatile uint8WifiOnLinkFlag=0;

volatile uint8WifiSendStartTime=0;

volatile uint8WifiHeartbeatno=0;//Wifi发送心跳次数

volatile uint8WifiSendEnterNetFlag=0;//Wifi发送登录帧标志i

volatile uint8WifiEtherNetFlag=0;//

/****************************************************************************** *********************

**Function name:STM_EVAL_USART3_Init

**Descriptions:串口3中断服务函数

**input parameters:无

**Output parameters::无

**Returned value:无

******************************************************************************* *********************/

void STM_EVAL_USART3_Init(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

/*Enable and set USART3Interrupt to the0priority*/

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//嵌套优先级分组为1

NVIC_InitStructure.NVIC_IRQChannel=USART3_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;

NVIC_Init(&NVIC_InitStructure);

}

/****************************************************************************** ***********************

**

**初始化客户端WifiPortIOSet

**

******************************************************************************* **********************/

void WifiIOInit(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

//RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Pin=Reload;//定义Reload输出脚20140731

GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_SetBits(GPIOB,Reload);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Pin=ResetTn;//定义ResetTn输出脚20140731

GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_SetBits(GPIOB,ResetTn);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;

GPIO_InitStructure.GPIO_Pin=PWR_SW;//定义PWR_SW输出脚20140731

GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_SetBits(GPIOA,PWR_SW);

}

/****************************************************************************** **********************

*名称:USART3_Wifi()

*功能:初始化串口3

*入口参数:

*出口参数:

******************************************************************************* ***********************/

void USART3_Wifi(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

USART_InitTypeDef USART_InitStructure;

/*config USART2clock*/

//RCC_APB2PeriphClockCmd(RCC_APB1Periph_USART3|RCC_APB2Periph_GPIOB,

ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);

/*USART3GPIO config*/

/*Configure USART3Tx(PB.10)as alternate function push-pull*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure);

/*Configure USART3Rx(PB.11)as input floating*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOB,&GPIO_InitStructure);

/*USART3mode config*/

USART_https://www.wendangku.net/doc/696746470.html,ART_BaudRate=115200;

USART_https://www.wendangku.net/doc/696746470.html,ART_WordLength=USART_WordLength_8b;

USART_https://www.wendangku.net/doc/696746470.html,ART_StopBits=USART_StopBits_1;

USART_https://www.wendangku.net/doc/696746470.html,ART_Parity=USART_Parity_No;

USART_https://www.wendangku.net/doc/696746470.html,ART_HardwareFlowControl=USART_HardwareFlowControl_None;

USART_https://www.wendangku.net/doc/696746470.html,ART_Mode=USART_Mode_Rx|USART_Mode_Tx;

USART_Init(USART3,&USART_InitStructure);

/*使能串口3的发送和接收中断*/

USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);

USART_Cmd(USART3,ENABLE);

STM_EVAL_USART3_Init();//中断初始化

WifiIOInit();//WIFI控制脚的初始化20140731

}

/****************************************************************************** ***************************

**Function name:USART3_IRQHandler

**Descriptions:串口3中断服务函数

**input parameters:无

**Output parameters::无

**Returned value:无

******************************************************************************* **************************/

void USART3_IRQHandler(void)

{

if(USART_GetITStatus(USART3,USART_IT_RXNE)!=RESET)

{

UART3RxCompJudg=VALID_FLAG;

UART3RxCompTime=0;

Uart3OverTime=0;

if(UART3_RxFullFlag==0)

{

UART3_RxBuf[UART3_RxEnd++]=USART_ReceiveData(USART3);/*保存接收到的数据*/

if(UART3_RxEnd>=UART3_RXBUF_SIZE)

UART3_RxEnd=0;

if(UART3_RxEnd==UART3_RxHead)

UART3_RxFullFlag=1;

UART3_RxEmptyFlag=0;

}

}

//USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);

}

/****************************************************************************** ***************************

**Function name:HandleRFSendData

**Descriptions:发送多个字节数据

**input parameters:Buffer:发送数据存储位置

**NByte:发送数据个数

**Output parameters::无

**Returned value:无

******************************************************************************* **************************/

void HandleWifiSendData(unsigned char*buffer,int bufferlen)

{

while(bufferlen>=0)

{

USART_SendData(USART3,*buffer++);

//ResetWdog();

while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);

bufferlen--;

}

//USART_Cmd(USART3,ENABLE);

}

/****************************************************************************** **************

*名称:HandleRFUartTimer()

*功能:处理读UART1时间

*入口参数:

*出口参数:

******************************************************************************* **************/

void HandleWifiUartTimer(void)

{

if(UART3RxCompJudg==VALID_FLAG)//接收是否完成判断

{

if(++UART3RxCompTime>=UART3_COMP_TIME)//判断接收中断之间超时

{

UART3RxCompTime=0;

UART3RxCompJudg=0;

UART3RxCompFlag=VALID_FLAG;

}

//NoReDataTime=0;

}

else

Uart3OverTime++;

}

/****************************************************************************** *****************

*名称:Uart3ReadBytes()

*功能:读取串口2字符串

*入口参数:*pBuf:读取数据存储区

*出口参数:

******************************************************************************* ******************/

uint16Uart3ReadBytes(uint8*pBuf)

{

uint16nEnd=0;

uint16Size=0;

if(UART3_RxEmptyFlag==0)//串口0接收数据缓冲区不为空

{

nEnd=UART3_RxEnd;//中断可能改变此值

UART3_RxFullFlag=0;

if(UART3_RxHeadhead

{

Size=nEnd-UART3_RxHead;

memcpy(pBuf,(uint8*)&UART3_RxBuf[0]+UART3_RxHead,Size);

UART3_RxHead=nEnd;

}

else//head>end

{

Size=UART3_RXBUF_SIZE+nEnd-UART3_RxHead;

memcpy(pBuf,(uint8*)&UART3_RxBuf[0]+UART3_RxHead,UART3_RXBUF_SIZE-UART3_RxHead);

if(nEnd>0)

memcpy(pBuf+UART3_RXBUF_SIZE-UART3_RxHead,(uint8 *)&UART3_RxBuf[0],nEnd);

UART3_RxHead=nEnd;

}

if(UART3_RxHead==UART3_RxEnd)

UART3_RxEmptyFlag=1;//接收数据缓冲区空

}

else

Size=0;

memset((uint8*)&UART3_RxBuf[0],0x00,512);

return Size;

}

/****************************************************************************** ******************

*名称:GetWifiMode485Data()

*功能:读出接收的数据,取出完整的一帧,放到接收BUF,

*入口参数:无

*出口参数:返回长度和数据BUF。

******************************************************************************* *******************/

uint16GetWifiMode485Data(void)

{

uint16loop,temps,size;

uint16i,starti;

uint8temp1,temp2;

uint16datalen;

memset((uint8*)&WifiRecBuf,0x00,512);

size=Uart3ReadBytes((uint8*)WifiRecBuf);

temps=size;

i=0;

while(WifiRecBuf[i]!=0x68&&i

i++;

if(i>=size)

return0;//错误格式信息

starti=i;//point0x68

i+=7;

if(WifiRecBuf[i]!=0x68)

return0;

i++;//point ctrlcode

i++;//point len;

temp1=WifiRecBuf[i];

temp2=WifiRecBuf[i+1];

datalen=(uint16)(temp1+temp2*256);//2013-09-05

i+=2;

if(i+datalen>=temps)

return0;

i+=datalen;//point cs

i++;//point0x16

if(WifiRecBuf[i]!=0x16)

return0;

size=datalen+9;//head(9)+cs+0x16

for(loop=0;loop

WifiRecBuf[loop]=WifiRecBuf[loop+starti];

return size;

}

/****************************************************************************** ******************

*名称:GetWifiATData()

*功能:读出接收的数据,取出完整的一帧,放到接收BUF,

*入口参数:无

*出口参数:返回长度和数据BUF。

******************************************************************************* *******************/

uint16GetWifiATData(void)

{

uint16size;

memset((uint8*)&WifiRecBuf,0x00,512);

size=Uart3ReadBytes((uint8*)WifiRecBuf);

return size;

}

/****************************************************************************** *****

**

**初始化客户端WifiParmSet

**

******************************************************************************* *****/

void WifiParmSet(void)

{

GPIO_SetBits(GPIOB,Reload);

GPIO_ResetBits(GPIOB,ResetTn);

Channel_Timer_Limit=200;

GPIO_SetBits(GPIOA,PWR_SW);

WifiStatus=Wifi_INIT;

SetWifiParmFlag=VALID_FLAG;

WifiEtherNetFlag=0;

}

/****************************************************************************** *

*名称:WifiATFrame()

*功能:整理上发数据包并发送

*入口参数:status:状态,*pData:数据地址,dataSize:数据大小设置WIFI用户名及密码:AT+WAP=11BG,LAUVAN(SSID),CHI AT+WAKEY=WPA2PSK,AES,22222222

*出口参数:OK:正确,ERROR:错误

******************************************************************************* */

//void WifiATFrame(uint8status,uint8*pData,uint16dataSize)

void WifiATFrame(uint8status)

{

uint8*ptr;

uint8len;

uint16size=0;

uint16temp,temp1,temp2,temp3,temp4;

uint16severport;

size=0;

ptr=(uint8*)&WifiSendBuf;

*(ptr++)=0x41;//A

*(ptr++)=0x54;//T

*(ptr++)=0X2B;//+

size+=3;

if(status==Wifi_STA)//AT+WMODE=AP

{

*(ptr++)=0x57;//W

*(ptr++)=0x4D;//M

*(ptr++)=0X4F;//O

*(ptr++)=0x44;//D

*(ptr++)=0x45;//E

*(ptr++)=0x3D;//=

*(ptr++)=0x41;//A

*(ptr++)=0x50;//P

//*(ptr++)=0x41;//A

size+=8;

}

else if(status==Wifi_WSSSID)//AT+WAP=11BG,LAUVAN(SSID),CHI {

*(ptr++)=0x57;//W

*(ptr++)=0x41;//A

*(ptr++)=0X53;//P

*(ptr++)=0x50;//=

size+=4;

len=WifiName[0];

memcpy(ptr,(uint8*)&WifiName[1],len);

ptr+=len;

size+=len;

}

else if(status==Wifi_WSKEY)//AP的KEY:: AT+WAKEY=WPA2PSK,AES,22222222

{

*(ptr++)=0x57;//W

*(ptr++)=0x41;//A

*(ptr++)=0x4b;//K

*(ptr++)=0x45;//E

*(ptr++)=0x59;//Y

*(ptr++)=0x3D;//=

*(ptr++)=0x57;//W

*(ptr++)=0x50;//P

*(ptr++)=0x41;//A

*(ptr++)=0x32;//2

*(ptr++)=0x50;//P

*(ptr++)=0x53;//S

*(ptr++)=0x4b;//K

*(ptr++)=0x2c;//,

*(ptr++)=0x41;//A

*(ptr++)=0x45;//E

*(ptr++)=0x53;//S

*(ptr++)=0x2c;//,

size+=18;

len=WifiPass[0];

memcpy(ptr,(uint8*)&WifiPass[1],len);

ptr+=len;

size+=len;

}

else if(status==Wifi_WANN)//AP的IP及网关:

AT+LANN=192.168.1.1,255.255.255.0

{

*(ptr++)=0x4C;//L

*(ptr++)=0x41;//A

*(ptr++)=0x4E;//N

*(ptr++)=0x4E;//N

*(ptr++)=0x3D;//=

*(ptr++)=0x31;//1

*(ptr++)=0x39;//9

*(ptr++)=0x32;//2

*(ptr++)=0X2E;//.

*(ptr++)=0x31;//1

*(ptr++)=0x36;//6

*(ptr++)=0x38;//8

*(ptr++)=0x2E;//.

*(ptr++)=0x31;//1

*(ptr++)=0x2E;//.

*(ptr++)=0x31;//1

*(ptr++)=0x2C;//,

*(ptr++)=0x32;//2

*(ptr++)=0x35;//5

*(ptr++)=0x35;//5

*(ptr++)=0X2E;//.

*(ptr++)=0x32;//2

*(ptr++)=0x35;//5

*(ptr++)=0x35;//5

*(ptr++)=0X2E;//.

*(ptr++)=0x32;//2

*(ptr++)=0x35;//5

*(ptr++)=0x35;//5

*(ptr++)=0X2E;//.

*(ptr++)=0x31;//0

size+=30;

}

else if(status==Wifi_NETP)//AT+NETP=TCP,CLIENT,6000,192.168.1.56 {

*(ptr++)=0x4E;//N

*(ptr++)=0x45;//E

*(ptr++)=0x54;//T

*(ptr++)=0x50;//P

*(ptr++)=0x3D;//=

*(ptr++)=0x54;//T

*(ptr++)=0x43;//C

*(ptr++)=0x50;//P

*(ptr++)=0x2C;//,

*(ptr++)=0x53;//S

*(ptr++)=0x45;//E

*(ptr++)=0x52;//R

*(ptr++)=0X56;//V

*(ptr++)=0x45;//E

*(ptr++)=0x52;//R

*(ptr++)=0x2C;//,

size+=16;

severport=(uint16)(SeverIPTemp[4]+SeverIPTemp[5]*256); temp=severport%10000;

temp1=(severport/10000);

*(ptr++)=0x30|(temp1&0x0f);//8 temp2=(temp%1000);

temp3=(temp/1000);

*(ptr++)=0x30|(temp3&0x0f);//8 temp=(temp2%100);

temp4=(temp2/100);

*(ptr++)=0x30|(temp4&0x0f);//8 temp2=(temp%10);

temp1=(temp/10);

*(ptr++)=0x30|(temp1&0x0f);//8

*(ptr++)=0x30|(temp2&0x0f);//8

size+=5;

*(ptr++)=0x2C;//,

temp=(SeverIPTemp[0]%100);

temp1=(SeverIPTemp[0]/100);

*(ptr++)=0x30|(temp1&0x0f);//8 temp2=(temp%10);

temp3=(temp/10);

*(ptr++)=0x30|(temp3&0x0f);//8

*(ptr++)=0x30|(temp2&0x0f);//8

*(ptr++)=0X2E;//.

size+=4;

temp=(SeverIPTemp[1]%100);

temp1=(SeverIPTemp[1]/100);

*(ptr++)=0x30|(temp1&0x0f);//8 temp2=(temp%10);

temp3=(temp/10);

*(ptr++)=0x30|(temp3&0x0f);//8

*(ptr++)=0x30|(temp2&0x0f);//8

*(ptr++)=0X2E;//.

size+=4;

temp=(SeverIPTemp[2]%100);

temp1=(SeverIPTemp[2]/100);

*(ptr++)=0x30|(temp1&0x0f);//8

temp2=(temp%10);

temp3=(temp/10);

*(ptr++)=0x30|(temp3&0x0f);//8

*(ptr++)=0x30|(temp2&0x0f);//8

*(ptr++)=0X2E;//.

size+=4;

temp=(SeverIPTemp[3]%100);

temp1=(SeverIPTemp[3]/100);

*(ptr++)=0x30|(temp1&0x0f);//8

temp2=(temp%10);

temp3=(temp/10);

*(ptr++)=0x30|(temp3&0x0f);//8

*(ptr++)=0x30|(temp2&0x0f);//8

//*(ptr++)=0X2E;//.

size+=3;

}

else if(status==Wifi_Reset)//AT+Z

{

*(ptr++)=0x5a;//z

size+=1;

WifiStatus=Wifi_INIT;

//SetWifiUartParmFlag=VALID_FLAG;

SetWifiParmFlag=0;

}

*(ptr++)=0x0d;//CR

*(ptr++)=0x0a;//LF

size+=2;

HandleWifiSendData((uint8*)&WifiSendBuf,size);

}

/****************************************************************************** *****

**

**定时查询处理Wifi任务HandleWifiLinkTimer

**

******************************************************************************* *****/

void HandleWifiLinkTimer(void)

{

//处理Wifi流程

if((SetWifiParmFlag==VALID_FLAG)&&(Channel_Timer_Limit==0))

{

GPIO_SetBits(GPIOB,ResetTn);

switch(WifiStatus)

{

case Wifi_INIT://先发+++

memset((uint8*)&WifiSendBuf[0],0x2b,3);

HandleWifiSendData((uint8*)&WifiSendBuf,1);

Send2BTime++;

if(Send2BTime>2)

{

Channel_Timer_Limit=100;

Send2BTime=0;

}

else

Channel_Timer_Limit=10;

break;

case Wifi_A://再发a

WifiSendBuf[0]=0x61;

HandleWifiSendData((uint8*)&WifiSendBuf[0],1);

Channel_Timer_Limit=100;

break;

default://开始发AT指令

WifiATFrame(WifiStatus);

Channel_Timer_Limit=100;

break;

}

}

//处理Wifi串口模式

else if((SetWifiUartParmFlag==VALID_FLAG)&&(Channel_Timer_Limit==0)) {

GPIO_SetBits(GPIOB,ResetTn);

switch(WifiStatus)

{

case Wifi_INIT://先发+++

if(WifiSendStartTime>5)

{

//SendGprsEnterFrame(3);

WifiSendStartTime=0;

Channel_Timer_Limit=200;

WifiSendEnterNetFlag=VALID_FLAG;

break;

}

WifiSendEnterNetFlag=0;

memset((uint8*)&WifiSendBuf[0],0x2b,3);

HandleWifiSendData((uint8*)WifiSendBuf,1);

Send2BTime++;

if(Send2BTime>2)

{

Channel_Timer_Limit=100;

Send2BTime=0;

WifiSendStartTime++;

}

else

Channel_Timer_Limit=10;

break;

case Wifi_A://再发a

if(WifiSendStartTime>5)

{

//SendGprsEnterFrame(3);

WifiSendStartTime=0;

Channel_Timer_Limit=200;

WifiSendEnterNetFlag=VALID_FLAG;

break;

}

WifiSendBuf[0]=0x61;

HandleWifiSendData((uint8*)WifiSendBuf,1);

Channel_Timer_Limit=100;

WifiSendStartTime++;

break;

default://开始发AT指令

WifiATFrame(WifiStatus);

Channel_Timer_Limit=50;

break;

}

//Channel_Timer_Limit=100;

}

}

/****************************************************************************** ******************

*名称:HandleWifiData()

*功能:处理上行串口接收到的数据

*入口参数:

*出口参数:

*******************************************************************************

******************/

void HandleWifiData(void)

{

uint16DataLen;

GprsFrameType*pLCFrame;

if(SetWifiParmFlag==VALID_FLAG&&WifiSendEnterNetFlag!=VALID_FLAG)

{

DataLen=GetWifiATData();

switch(WifiStatus)

{

case Wifi_INIT:

if(WifiRecBuf[0]==0x61)

WifiStatus=Wifi_A;

break;

case Wifi_A:

if(WifiRecBuf[0]==0x2b&&WifiRecBuf[1]==0x6f&&WifiRecBuf[2]==0x6b)

{

if(SetWifiParmFlag!=0)

WifiStatus=Wifi_STA;

else

WifiStatus=Wifi_WSLK;

}

break;

case Wifi_STA:

if(WifiRecBuf[0]==0x2b&&WifiRecBuf[1]==0x6f&&WifiRecBuf[2]==0x6b)

WifiStatus=Wifi_WSSSID;

Channel_Timer_Limit=0;

break;

case Wifi_WSSSID:

if(WifiRecBuf[0]==0x2b&&WifiRecBuf[1]==0x6f&&WifiRecBuf[2]==0x6b)

WifiStatus=Wifi_WSKEY;

Channel_Timer_Limit=0;

break;

case Wifi_WSKEY:

if(WifiRecBuf[0]==0x2b&&WifiRecBuf[1]==0x6f&&WifiRecBuf[2]==0x6b)

WifiStatus=Wifi_WANN;

Channel_Timer_Limit=0;

break;

case Wifi_WANN:

if(WifiRecBuf[0]==0x2b&&WifiRecBuf[1]==0x6f&&WifiRecBuf[2]==0x6b)

WifiStatus=Wifi_NETP;

Channel_Timer_Limit=0;

break;

case Wifi_NETP:

if(WifiRecBuf[0]==0x2b&&WifiRecBuf[1]==0x6f&&WifiRecBuf[2]==0x6b)

WifiStatus=Wifi_Reset;

Channel_Timer_Limit=0;

break;

default:

break;

}

if(DataLen>10)

{

if(UpTaskFrame.UpTaskFlag==VALID_FLAG)

return;

//DataLen=GetWifiMode485Data();

//if(DataLen<10)

//return;

if(DataLen>=512)//

return;

if(CmpFrameIs((uint8*)&WifiRecBuf[0])==OK)//判断数据帧格式(对集中器本身的命令)

{

UpTaskFrame.UpTaskFlag=VALID_FLAG;

pLCFrame=(GprsFrameType*)WifiRecBuf;

HandleUpProtocolMain(pLCFrame,3);//处理数据帧

WifiOnLinkFlag=VALID_FLAG;

WifiStatus=Wifi_INIT;

SetWifiUartParmFlag=0;

SetWifiParmFlag=0;

}

}

}

else

{

if(UpTaskFrame.UpTaskFlag==VALID_FLAG)

return;

DataLen=GetWifiMode485Data();

if(DataLen<8)

return;

if(DataLen>=512)//

return;

if(CmpFrameIs((uint8*)&WifiRecBuf[0])==OK)//判断数据帧格式(对集中器本身的命令)

{

UpTaskFrame.UpTaskFlag=VALID_FLAG;

pLCFrame=(GprsFrameType*)WifiRecBuf;

HandleUpProtocolMain(pLCFrame,3);//处理数据帧

WifiOnLinkFlag=VALID_FLAG;

WifiStatus=Wifi_INIT;

SetWifiUartParmFlag=0;

SetWifiParmFlag=0;

}

}

}

相关文档