Files
SM-1000M/RTX5_20220316/Driver/esp8266/tcp.c
2026-04-23 10:50:18 +08:00

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;
}
}