194 lines
4.6 KiB
C
194 lines
4.6 KiB
C
#include "tcp.h"
|
|
#include "esp8266.h"
|
|
//volatile u8 TcpClosedFlag = 0;
|
|
/*
|
|
void ESP8266_STA_TCPClient_Test(void)
|
|
{
|
|
u8 res;
|
|
|
|
char str[100]={0};
|
|
ESP8266_AT_Test();
|
|
|
|
ESP8266_Net_Mode_Choose(STA);
|
|
while(!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD));
|
|
ESP8266_Enable_MultipleId ( DISABLE );
|
|
while(!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, User_ESP8266_TCPServer_PORT));
|
|
while(!ESP8266_UnvarnishSend());
|
|
|
|
while ( 1 )
|
|
{
|
|
sprintf (str,"深圳市安信可科技有限公司" );//格式化发送字符串到TCP服务器
|
|
//ESP8266_SendString ( ENABLE, str, 0, Single_ID_0 );
|
|
UART_PutStr(USART1,str);
|
|
delay_ms(1000);
|
|
if(TcpClosedFlag) //判断是否失去连接
|
|
{
|
|
ESP8266_ExitUnvarnishSend(); //退出透传模式
|
|
do
|
|
{
|
|
res = ESP8266_Get_LinkStatus(); //获取连接状态
|
|
}
|
|
while(!res);
|
|
|
|
if(res != 3) //if(res == 4) 确认失去连接,重连
|
|
{
|
|
|
|
|
|
while (!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD ) );
|
|
while (!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, User_ESP8266_TCPServer_PORT) );
|
|
}
|
|
while(!ESP8266_UnvarnishSend());
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
//void ESP8266_SendStr(char *str)
|
|
//{
|
|
// u8 res=0;
|
|
// do
|
|
// {
|
|
// res = ESP8266_Get_LinkStatus(); //获取连接状态
|
|
// } while(!res);
|
|
// if(res != 3) //if(res == 4) 确认失去连接,重连
|
|
// {
|
|
//
|
|
// ESP8266_Net_Mode_Choose(STA);
|
|
// while (!ESP8266_JoinAP(User_ESP8266_SSID, User_ESP8266_PWD ) );
|
|
// while (!ESP8266_Link_Server(enumTCP, User_ESP8266_TCPServer_IP, User_ESP8266_TCPServer_PORT) );
|
|
// }
|
|
// while(!ESP8266_UnvarnishSend());
|
|
// UART_PutStr(USART1,str);
|
|
//
|
|
//}
|
|
|
|
|
|
void ESP8266_AP_TCPServer_Config(char *ssid,char *pwd,char *port)
|
|
{
|
|
u8 i=0;
|
|
// ESP8266_Send_AT_Cmd("AT+RESTORE","ready",NULL,500);
|
|
PWR_CTRLTFWF_L;
|
|
// PWR_CTRL3V3_L;
|
|
delay_ms(1000);
|
|
PWR_CTRLTFWF_H;
|
|
// PWR_CTRL3V3_H;
|
|
delay_ms(1000);
|
|
ESP8266_AT_Test();//恢复出厂设置
|
|
i = 0;
|
|
while((!ESP8266_Send_AT_Cmd("ATE0","OK",NULL,500))&(i<100))
|
|
{
|
|
i++;
|
|
|
|
}
|
|
|
|
i=0;
|
|
while((!ESP8266_CWSAP_Set ( ssid, pwd,5, 3 ))&(i<100))
|
|
{
|
|
i++;
|
|
|
|
}
|
|
i=0;
|
|
while((!ESP8266_Net_Mode_Choose(AP))&(i<100))
|
|
{
|
|
i++;
|
|
|
|
}
|
|
i=0;
|
|
while((!ESP8266_Enable_MultipleId ( ENABLE ))&(i<10))
|
|
{
|
|
i++;
|
|
|
|
}
|
|
i=0;
|
|
while((!ESP8266_Server_Create( port,ENABLE ))&(i<100))
|
|
{
|
|
i++;
|
|
|
|
}
|
|
|
|
__nop();
|
|
|
|
}
|
|
/*void Parse_ESP8266_Buffer(void)
|
|
{
|
|
char *subString;
|
|
char *subStringNext;
|
|
char i = 0;
|
|
clear_Init_Data_Equipment();
|
|
for (i = 0 ; i <= 9 ; i++)
|
|
{
|
|
if (i == 0)
|
|
{
|
|
subString = strstr(ESP8266_Fram_Record_Struct.Data_RX_BUF, "CMD");
|
|
subString++;
|
|
subString++;
|
|
subString++;//找到,地址
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
subString++;
|
|
if ((subStringNext = strstr(subString, ",")) != NULL)
|
|
{
|
|
|
|
switch(i)
|
|
{
|
|
case 1:memcpy(Init_Data_Equipment.Bc25_Ip, subString, subStringNext - subString);break; //获取UTC时间
|
|
case 2:memcpy(Init_Data_Equipment.Bc25_Port, subString, subStringNext - subString);break; //获取UTC时间
|
|
case 3:memcpy(Init_Data_Equipment.ESP8266_AP_Ports, subString, subStringNext - subString);break; //获取纬度信息
|
|
case 4:memcpy(Init_Data_Equipment.ESP8266_AP_SSIDs, subString, subStringNext - subString);break; //获取N/S
|
|
case 5:memcpy(Init_Data_Equipment.ESP8266_AP_PWDs, subString, subStringNext - subString);break; //获取经度信息
|
|
case 6:memcpy(Init_Data_Equipment.Measure_Interval, subString, subStringNext - subString);break; //获取E/W
|
|
case 7:memcpy(Init_Data_Equipment.Pub_Mode, subString, subStringNext - subString);break; //获取E/W
|
|
case 8:memcpy(Init_Data_Equipment.Pub_Time, subString, subStringNext - subString);break; //获取E/W
|
|
case 9:memcpy(Init_Data_Equipment.Equipment_ID, subString, subStringNext - subString);break; //获取E/W
|
|
|
|
default:break;
|
|
}
|
|
|
|
subString = subStringNext;
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
//解析错误
|
|
}
|
|
}
|
|
}
|
|
|
|
Usart4_ReceiveBuff_Clear();
|
|
}
|
|
*/
|
|
|
|
void WIFI_Process(void)
|
|
{
|
|
u8 times=0;
|
|
ESP8266_Init(115200);
|
|
ESP8266_AP_TCPServer_Config(Init_Data_Equipment.ESP8266_AP_SSIDs,
|
|
Init_Data_Equipment.ESP8266_AP_PWDs,
|
|
Init_Data_Equipment.ESP8266_AP_Ports);
|
|
while(times<60) //60S等待外部连接WIFI
|
|
{
|
|
times++;
|
|
osDelay(1000);
|
|
if(ESP8266_Get_LinkStatus()==2)times=61;
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|