E103-W01发送AT指令

工作中写的,但是没用上,又不舍得直接删掉,现在发在这里留个念想

#define AT			"AT\r\n"
#define AT_RESET	"AT+RST\r\n"
#define AT_MODE_STA	"AT+CWMODE=1\r\n"
#define AT_MODE_AP		"AT+CWMODE=2\r\n"
#define AT_MODE_MIX	"AT+CWMODE=3\r\n"

#define AT_CIPMODE		"AT+CIPMODE=1\r\n"	//透传命令
#define AT_EXITCIPMODE	"AT+CIPMODE=0\r\n"	//退出透传命令
#define AT_CIPSEND		"AT+CIPSEND\r\n"	//开始透传
#define AT_ENDCIPMODE	"+++"
#define AT_CIPCLOSE "AT+CIPCLOSE\r\n"		//断开服务器连接


#define AT_GETMUX "AT+CIPMUX=1\r\n"		//开启多连接
#define AT_EXITMUX "AT+CIPMUX=0\r\n"		//开启多连接
#define AT_BUILDSERVER "AT+CIPSERVER=1,1001\r\n"		//建立服务器
#define AT_CLOSESERVER "AT+CIPSERVER=0\r\n"		//关闭服务器

#define AT_RX_OK "ok"			//用于接收的时候分析有没有接收到目标数据



void AT_Timer_Start(u8 period)
{
	switch(period)
	{
		case 1:
		{
			WiFi_Timer_1s_CNT[0] = 0;
			WiFi_Timer_1s_CTL = true;
			break;
		}
		case 2:
		{
			WiFi_Timer_2s_CNT[0] = 0;
			WiFi_Timer_2s_CTL = true;
			break;
		}
		case 8:
		{
			WiFi_Timer_8s_CNT[0] = 0;
			WiFi_Timer_8s_CTL = true;
			break;
		}
		case 12:
		{
			WiFi_Timer_12s_CNT[0] = 0;
			WiFi_Timer_12s_CTL = true;
			break;
		}
		
	}
}
void AT_Timer_Stop(u8 period)
{
	switch(period)
	{
		case 1:
		{
			WiFi_Timer_1s_CNT[0] = 0;
			WiFi_Timer_1s_CTL = false;
			break;
		}
		case 2:
		{
			WiFi_Timer_2s_CNT[0] = 0;
			WiFi_Timer_2s_CTL = false;
			break;
		}
		case 8:
		{
			WiFi_Timer_8s_CNT[0] = 0;
			WiFi_Timer_8s_CTL = false;
			break;
		}
		case 12:
		{
			WiFi_Timer_12s_CNT[0] = 0;
			WiFi_Timer_12s_CTL = false;
			break;
		}
	}
}


#define AT_RX_LEN 10
u8 AT_TX_Times = 0;
#define TX_SUCCESS 0
#define TX_WAITING 1
#define TX_FAIL 2
bool TX_State = false;
u8 TX_AT_AT(void)
{
	bool RX_Fault = false;
	u8 RX_Data[UART_RX_BUF_SIZE] = {0};
	if(TX_State == false)
	{
		uart_Send_Data((u8*)"AT\r\n",sizeof("AT\r\n"));
		//标志位表示已经发送过这个命令了
		TX_State = true;
		AT_Timer_Start(1);
	}
	
//	while(1)
//	{
		if(WiFi_Timer_1s_CNT[0] >= WiFi_Timer_1s_CNT[1])
		{
			WiFi_Timer_1s_CNT[0] = 0;
			
			Uart4_RX(RX_Data,AT_RX_LEN);
			WiFi_CleanDataRevBuffer();
			//----------查找需要的字符是否出现----------------
			if(NULL != strstr((char *)RX_Data, AT_RX_OK))
			{	//出现了
				AT_Timer_Stop(1);
				TX_State = false;
				return TX_SUCCESS;
			}
			else
			{	//没出现,错误标志位置位
				RX_Fault = true;
			}
			if(RX_Fault == true)
			{	//错误了就让发送次数加一
				TX_State = false;
				AT_TX_Times++;
			}
			if(AT_TX_Times >= 3)	//三次都没成功
			{	//尝试三次还没有成功,关闭定时器,返回失败
				AT_Timer_Stop(1);
				AT_TX_Times = 0;
				TX_State = false;	//三次都没接收到,再运行这个函数就重新发送AT指令
				return TX_FAIL;
			}
		}
//	}
	
	return TX_WAITING;
}

#define AT_RESET_RX_LEN 20
//复位
//u8 AT_TX_Times = 0;
u8 TX_AT_RESER(void)		//发完复位命令模块会回复一大堆设备信息,最后回复一个ready
{							//,但是这一堆信息太多了,大于256个字节,所以现在接收有点问题
	bool RX_Fault = false;
	u8 RX_Data[UART_RX_BUF_SIZE+1] = {0};
	if(TX_State == false)
	{
		uart_Send_Data((u8*)AT_RESET,sizeof(AT_RESET));
		//标志位表示已经发送过这个命令了
		TX_State = true;
		AT_Timer_Start(2);
	}
	
//	while(1)
//	{
		if(WiFi_Timer_2s_CNT[0] >= WiFi_Timer_2s_CNT[1])
		{
			WiFi_Timer_2s_CNT[0] = 0;
			
			Uart4_RX(RX_Data,AT_RESET_RX_LEN);
			WiFi_CleanDataRevBuffer();
			//----------查找需要的字符是否出现----------------
			if(NULL != strstr((char *)RX_Data, AT_RX_OK))
			{	//出现了
				AT_Timer_Stop(2);
				TX_State = false;
				FL_DelayMs(300);
				return TX_SUCCESS;
			}
			else
			{	//没出现,错误标志位置位
				RX_Fault = true;
			}
			if(RX_Fault == true)
			{	//错误了就让发送次数加一
				TX_State = false;
				AT_TX_Times++;
			}
			if(AT_TX_Times >= 3)	//三次都没成功
			{	//尝试三次还没有成功,关闭定时器,返回失败
				AT_Timer_Stop(2);
				AT_TX_Times = 0;
				TX_State = false;	//三次都没接收到,再运行这个函数就重新发送AT指令
				return TX_FAIL;
			}
		}
//	}
	
	return TX_WAITING;
}


#define AT_MIXMode_RX_LEN 20
//进入混合模式
u8 TX_AT_MIXMode(void)
{
	bool RX_Fault = false;
	u8 RX_Data[UART_RX_BUF_SIZE+1] = {0};
	if(TX_State == false)
	{
		uart_Send_Data((u8*)AT_MODE_MIX,sizeof(AT_MODE_MIX));
		//标志位表示已经发送过这个命令了
		TX_State = true;
		AT_Timer_Start(2);
	}
	
//	while(1)
//	{
		if(WiFi_Timer_2s_CNT[0] >= WiFi_Timer_2s_CNT[1])
		{
			WiFi_Timer_2s_CNT[0] = 0;
			
			Uart4_RX(RX_Data,AT_MIXMode_RX_LEN);
			WiFi_CleanDataRevBuffer();
			//----------查找需要的字符是否出现----------------
			if(NULL != strstr((char *)RX_Data, AT_RX_OK))
			{	//出现了
				AT_Timer_Stop(2);
				TX_State = false;
				return TX_SUCCESS;
			}
			else
			{	//没出现,错误标志位置位
				RX_Fault = true;
			}
			if(RX_Fault == true)
			{	//错误了就让发送次数加一
				TX_State = false;
				AT_TX_Times++;
			}
			if(AT_TX_Times >= 3)	//三次都没成功
			{	//尝试三次还没有成功,关闭定时器,返回失败
				AT_Timer_Stop(2);
				AT_TX_Times = 0;
				TX_State = false;	//三次都没接收到,再运行这个函数就重新发送AT指令
				return TX_FAIL;
			}
		}
//	}
	
	return TX_WAITING;
}

#define AT_GetWiFi_RX_LEN 90
//AT+CWJAP_DEF="XJWL_2.4G","XJWL888888"
#define WiFi_NAME_MAX_LEN 20
#define WiFi_PASSWORD_MAX_LEN 20
//连接WiFi
u8 WiFi_Name[WiFi_NAME_MAX_LEN] = {0};       //限制最长20个字符
u8 WiFi_Password[WiFi_PASSWORD_MAX_LEN] = {0};   //限制最长20个字符
u8 TX_AT_GetWiFi()
{
	u8 RX_Data[UART_RX_BUF_SIZE+1] = {0};
	bool RX_Fault = false;
	char at[65] = {0};
	u8 at_Len = 0;
	
	strcpy((char*)WiFi_Name,"XJWL_2.4G");
	strcpy((char*)WiFi_Password,"XJWL888888");
	
	at_Len = sprintf(at,"AT+CWJAP_DEF=\"%s\",\"%s\"\r\n",WiFi_Name,WiFi_Password);
	
	
	if(TX_State == false)
	{
		uart_Send_Data((u8*)at,at_Len);
		//标志位表示已经发送过这个命令了
		TX_State = true;
		AT_Timer_Start(8);
	}
	
//	while(1)
//	{
		if(WiFi_Timer_8s_CNT[0] >= WiFi_Timer_8s_CNT[1])
		{
			WiFi_Timer_8s_CNT[0] = 0;
			
			Uart4_RX(RX_Data,AT_MIXMode_RX_LEN);
			WiFi_CleanDataRevBuffer();
			//----------查找需要的字符是否出现----------------
			if(NULL != strstr((char *)RX_Data, AT_RX_OK))
			{	//出现了
				AT_Timer_Stop(8);
				TX_State = false;
				return TX_SUCCESS;
			}

			
			else
			{	//没出现,错误标志位置位
				RX_Fault = true;
			}
			if(RX_Fault == true)
			{	//错误了就让发送次数加一
				TX_State = false;
				AT_TX_Times++;
			}
			if(AT_TX_Times >= 3)	//三次都没成功
			{	//尝试三次还没有成功,关闭定时器,返回失败
				AT_Timer_Stop(8);
				AT_TX_Times = 0;
				TX_State = false;	//三次都没接收到,再运行这个函数就重新发送AT指令
				return TX_FAIL;
			}
		}
//	}
	
	return TX_WAITING;
}

#define AT_GetServer_RX_LEN 80
//AT+CIPSTART="TCP","192.168.10.181",6060
//连接服务器
u8 Server_Name[16] = {0};       //限制最长16个字符
u8 Server_Port[5] = {0};   //限制最长5个字符
u8 TX_AT_GetServer()
{
	u8 RX_Data[UART_RX_BUF_SIZE+1] = {0};
	bool RX_Fault = false;
	char at[65] = {0};
	u8 at_Len = 0;
	
	strcpy((char*)Server_Name,"192.168.10.181");
	strcpy((char*)Server_Port,"6060");
	
	at_Len = sprintf(at,"AT+CIPSTART=\"TCP\",\"%s\",%s\r\n",Server_Name,Server_Port);
	
	
	if(TX_State == false)
	{
		uart_Send_Data((u8*)at,at_Len);
		//标志位表示已经发送过这个命令了
		TX_State = true;
		AT_Timer_Start(8);
	}
	
//	while(1)
//	{
		if(WiFi_Timer_8s_CNT[0] >= WiFi_Timer_8s_CNT[1])
		{
			WiFi_Timer_8s_CNT[0] = 0;
			
			Uart4_RX(RX_Data,AT_GetServer_RX_LEN);
			WiFi_CleanDataRevBuffer();
			//----------查找需要的字符是否出现----------------
			if(NULL != strstr((char *)RX_Data, AT_RX_OK))
			{	//出现了
				AT_Timer_Stop(8);
				TX_State = false;
				return TX_SUCCESS;
			}
			if(NULL != strstr((char *)RX_Data, "ALREADY CONNECTED"))	//处于连接状态会有这个回复
			{	//出现了
				AT_Timer_Stop(8);
				TX_State = false;
				return TX_SUCCESS;
			}
			else
			{	//没出现,错误标志位置位
				RX_Fault = true;
			}
			if(RX_Fault == true)
			{	//错误了就让发送次数加一
				TX_State = false;
				AT_TX_Times++;
			}
			if(AT_TX_Times >= 3)	//三次都没成功
			{	//尝试三次还没有成功,关闭定时器,返回失败
				AT_Timer_Stop(8);
				AT_TX_Times = 0;
				TX_State = false;	//三次都没接收到,再运行这个函数就重新发送AT指令
				return TX_FAIL;
			}
		}
//	}
	return TX_WAITING;
}

#define AT_GetTransMode_RX_LEN 25
//进入透传模式
u8 TX_AT_GetTransMode()
{
	u8 RX_Data[UART_RX_BUF_SIZE+1] = {0};
	bool RX_Fault = false;
	
	if(TX_State == false)
	{
		uart_Send_Data((u8*)AT_CIPMODE,sizeof(AT_CIPMODE));
		//标志位表示已经发送过这个命令了
		TX_State = true;
		AT_Timer_Start(1);
	}
	
//	while(1)
//	{
		if(WiFi_Timer_1s_CNT[0] >= WiFi_Timer_1s_CNT[1])
		{
			WiFi_Timer_1s_CNT[0] = 0;
			
			Uart4_RX(RX_Data,AT_GetTransMode_RX_LEN);
			WiFi_CleanDataRevBuffer();
			//----------查找需要的字符是否出现----------------
			if(NULL != strstr((char *)RX_Data, AT_RX_OK))
			{	//出现了
				AT_Timer_Stop(1);
				TX_State = false;
				return TX_SUCCESS;
			}
			else
			{	//没出现,错误标志位置位
				RX_Fault = true;
			}
			if(RX_Fault == true)
			{	//错误了就让发送次数加一
				TX_State = false;
				AT_TX_Times++;
			}
			if(AT_TX_Times >= 3)	//三次都没成功
			{	//尝试三次还没有成功,关闭定时器,返回失败
				AT_Timer_Stop(1);
				AT_TX_Times = 0;
				TX_State = false;	//三次都没接收到,再运行这个函数就重新发送AT指令
				return TX_FAIL;
			}
		}
//	}
	return TX_WAITING;
}

//开始透传命令没有反馈
u8 TX_AT_StartTrans()
{
	uart_Send_Data((u8*)AT_CIPSEND,sizeof(AT_CIPSEND));
	return TX_SUCCESS;
}

//结束透传,也没有反馈
u8 TX_AT_EndTrans()
{	
	FL_DelayMs(300);
	uart_Send_Data((u8*)AT_ENDCIPMODE,sizeof(AT_ENDCIPMODE));
	FL_DelayMs(300);
	return TX_SUCCESS;
}

//退出透传模式
#define AT_ExitTransMode_RX_LEN 25
u8 TX_AT_ExitTransMode()
{
	u8 RX_Data[UART_RX_BUF_SIZE+1] = {0};
	bool RX_Fault = false;
	
	if(TX_State == false)
	{
		uart_Send_Data((u8*)AT_EXITCIPMODE,sizeof(AT_EXITCIPMODE));
		//标志位表示已经发送过这个命令了
		TX_State = true;
		AT_Timer_Start(1);
	}
//	while(1)
//	{
		if(WiFi_Timer_1s_CNT[0] >= WiFi_Timer_1s_CNT[1])
		{
			WiFi_Timer_1s_CNT[0] = 0;
			
			Uart4_RX(RX_Data,AT_ExitTransMode_RX_LEN);
			WiFi_CleanDataRevBuffer();
			//----------查找需要的字符是否出现----------------
			if(NULL != strstr((char *)RX_Data, AT_RX_OK))
			{	//出现了
				AT_Timer_Stop(1);
				TX_State = false;
				return TX_SUCCESS;
			}
			else
			{	//没出现,错误标志位置位
				RX_Fault = true;
			}
			if(RX_Fault == true)
			{	//错误了就让发送次数加一
				TX_State = false;
				AT_TX_Times++;
			}
			if(AT_TX_Times >= 3)	//三次都没成功
			{	//尝试三次还没有成功,关闭定时器,返回失败
				AT_Timer_Stop(1);
				AT_TX_Times = 0;
				TX_State = false;	//三次都没接收到,再运行这个函数就重新发送AT指令
				return TX_FAIL;
			}
		}
//	}
	return TX_WAITING;
}

#define AT_ExitServer_RX_LEN 35
//断开服务器连接
u8 TX_AT_ExitServer()
{
	bool RX_Fault = false;
	u8 RX_Data[UART_RX_BUF_SIZE] = {0};
	if(TX_State == false)
	{
		uart_Send_Data((u8*)AT_CIPCLOSE,sizeof(AT_CIPCLOSE));
		//标志位表示已经发送过这个命令了
		TX_State = true;
		AT_Timer_Start(1);
	}
	
//	while(1)
//	{
		if(WiFi_Timer_1s_CNT[0] >= WiFi_Timer_1s_CNT[1])
		{
			WiFi_Timer_1s_CNT[0] = 0;
			
			Uart4_RX(RX_Data,AT_ExitServer_RX_LEN);
			WiFi_CleanDataRevBuffer();
			//----------查找需要的字符是否出现----------------
			if(NULL != strstr((char *)RX_Data, AT_RX_OK))
			{	//出现了
				AT_Timer_Stop(1);
				TX_State = false;
				return TX_SUCCESS;
			}
			else
			{	//没出现,错误标志位置位
				RX_Fault = true;
			}
			if(RX_Fault == true)
			{	//错误了就让发送次数加一
				TX_State = false;
				AT_TX_Times++;
			}
			if(AT_TX_Times >= 3)	//三次都没成功
			{	//尝试三次还没有成功,关闭定时器,返回失败
				AT_Timer_Stop(1);
				AT_TX_Times = 0;
				TX_State = false;	//三次都没接收到,再运行这个函数就重新发送AT指令
				return TX_FAIL;
			}
		}
//	}
	
	return TX_WAITING;
}



//打开多连接(建立服务器的前置操作)
#define AT_GetMUX_RX_LEN 25
u8 TX_AT_GetMUX()
{
	u8 RX_Data[UART_RX_BUF_SIZE+1] = {0};
	bool RX_Fault = false;
	
	if(TX_State == false)
	{
		uart_Send_Data((u8*)AT_GETMUX,sizeof(AT_GETMUX));
		//标志位表示已经发送过这个命令了
		TX_State = true;
		AT_Timer_Start(1);
	}
//	while(1)
//	{
		if(WiFi_Timer_1s_CNT[0] >= WiFi_Timer_1s_CNT[1])
		{
			WiFi_Timer_1s_CNT[0] = 0;
			
			Uart4_RX(RX_Data,AT_GetMUX_RX_LEN);
			WiFi_CleanDataRevBuffer();
			//----------查找需要的字符是否出现----------------
			if(NULL != strstr((char *)RX_Data, AT_RX_OK))
			{	//出现了
				AT_Timer_Stop(1);
				TX_State = false;
				return TX_SUCCESS;
			}
			else
			{	//没收到目标信息,错误标志位置位
				RX_Fault = true;
			}
			if(RX_Fault == true)
			{	//错误了就让发送次数加一,并且再进来会重发
				TX_State = false;
				AT_TX_Times++;
			}
			if(AT_TX_Times >= 3)	//三次没收到,返回一个不一样的值(TX_FAIL),并且再进来会重发
			{	//尝试三次还没有成功,关闭定时器,返回失败
				AT_Timer_Stop(1);
				AT_TX_Times = 0;
				TX_State = false;	//三次都没接收到,再运行这个函数就重新发送AT指令
				return TX_FAIL;
			}
		}
//	}
	return TX_WAITING;
}

//关闭多连接(建立服务器的前置操作)
#define AT_GetMUX_RX_LEN 25
u8 TX_AT_ExitMUX()
{
	u8 RX_Data[UART_RX_BUF_SIZE+1] = {0};
	bool RX_Fault = false;
	
	if(TX_State == false)
	{
		uart_Send_Data((u8*)AT_EXITMUX,sizeof(AT_EXITMUX));
		//标志位表示已经发送过这个命令了
		TX_State = true;
		AT_Timer_Start(1);
	}
//	while(1)
//	{
		if(WiFi_Timer_1s_CNT[0] >= WiFi_Timer_1s_CNT[1])
		{
			WiFi_Timer_1s_CNT[0] = 0;
			
			Uart4_RX(RX_Data,AT_GetMUX_RX_LEN);
			WiFi_CleanDataRevBuffer();
			//----------查找需要的字符是否出现----------------
			if(NULL != strstr((char *)RX_Data, AT_RX_OK))
			{	//出现了
				AT_Timer_Stop(1);
				TX_State = false;
				return TX_SUCCESS;
			}
			else
			{	//没收到目标信息,错误标志位置位
				RX_Fault = true;
			}
			if(RX_Fault == true)
			{	//错误了就让发送次数加一,并且再进来会重发
				TX_State = false;
				AT_TX_Times++;
			}
			if(AT_TX_Times >= 3)	//三次没收到,返回一个不一样的值(TX_FAIL),并且再进来会重发
			{	//尝试三次还没有成功,关闭定时器,返回失败
				AT_Timer_Stop(1);
				AT_TX_Times = 0;
				TX_State = false;	//三次都没接收到,再运行这个函数就重新发送AT指令
				return TX_FAIL;
			}
		}
//	}
	return TX_WAITING;
}


//建立服务器
#define AT_BuildServer_RX_LEN 45
u8 TX_AT_BuildServer()
{
	u8 RX_Data[UART_RX_BUF_SIZE+1] = {0};
	bool RX_Fault = false;
	
	if(TX_State == false)
	{
		uart_Send_Data((u8*)AT_BUILDSERVER,sizeof(AT_BUILDSERVER));
		//标志位表示已经发送过这个命令了
		TX_State = true;
		AT_Timer_Start(2);
	}
//	while(1)
//	{
		if(WiFi_Timer_2s_CNT[0] >= WiFi_Timer_2s_CNT[1])
		{
			WiFi_Timer_2s_CNT[0] = 0;
			
			Uart4_RX(RX_Data,AT_BuildServer_RX_LEN);
			WiFi_CleanDataRevBuffer();
			//----------查找需要的字符是否出现----------------
			if(NULL != strstr((char *)RX_Data, AT_RX_OK))
			{	//出现了
				AT_Timer_Stop(2);
				TX_State = false;
				return TX_SUCCESS;
			}
			else
			{	//没收到目标信息,错误标志位置位
				RX_Fault = true;
			}
			if(RX_Fault == true)
			{	//错误了就让发送次数加一,并且再进来会重发
				TX_State = false;
				AT_TX_Times++;
			}
			if(AT_TX_Times >= 3)	//三次没收到,返回一个不一样的值(TX_FAIL),并且再进来会重发
			{	//尝试三次还没有成功,关闭定时器,返回失败
				AT_Timer_Stop(2);
				AT_TX_Times = 0;
				TX_State = false;	//三次都没接收到,再运行这个函数就重新发送AT指令
				return TX_FAIL;
			}
		}
//	}
	return TX_WAITING;
}

//关闭服务器
#define AT_BuildServer_RX_LEN 45
u8 TX_AT_CloseServer()
{
	u8 RX_Data[UART_RX_BUF_SIZE+1] = {0};
	bool RX_Fault = false;
	
	if(TX_State == false)
	{
		uart_Send_Data((u8*)AT_CLOSESERVER,sizeof(AT_CLOSESERVER));
		//标志位表示已经发送过这个命令了
		TX_State = true;
		AT_Timer_Start(2);
	}
//	while(1)
//	{
		if(WiFi_Timer_2s_CNT[0] >= WiFi_Timer_2s_CNT[1])
		{
			WiFi_Timer_2s_CNT[0] = 0;
			
			Uart4_RX(RX_Data,AT_BuildServer_RX_LEN);
			WiFi_CleanDataRevBuffer();
			//----------查找需要的字符是否出现----------------
			if(NULL != strstr((char *)RX_Data, AT_RX_OK))
			{	//出现了
				AT_Timer_Stop(2);
				TX_State = false;
				return TX_SUCCESS;
			}
			else
			{	//没收到目标信息,错误标志位置位
				RX_Fault = true;
			}
			if(RX_Fault == true)
			{	//错误了就让发送次数加一,并且再进来会重发
				TX_State = false;
				AT_TX_Times++;
			}
			if(AT_TX_Times >= 3)	//三次没收到,返回一个不一样的值(TX_FAIL),并且再进来会重发
			{	//尝试三次还没有成功,关闭定时器,返回失败
				AT_Timer_Stop(2);
				AT_TX_Times = 0;
				TX_State = false;	//三次都没接收到,再运行这个函数就重新发送AT指令
				return TX_FAIL;
			}
		}
//	}
	return TX_WAITING;
}


u8 Commu_Upload


bool AT_Test(void)
{
//	TX_AT_AT();	//发送AT
//	TX_AT_RESER();		//复位
//	TX_AT_MIXMode();	//混合模式
//	TX_AT_GetWiFi();	//链接WiFi
//	TX_AT_GetServer();	//连接服务器
//	TX_AT_GetTransMode();	//进入透传模式
//	TX_AT_StartTrans();	//开始透传
//	TX_AT_EndTrans();		//结束透传
//	TX_AT_ExitTransMode();	//退出透传模式
	TX_AT_ExitServer();
//	TX_AT_GetMUX();	//打开多连接
//	TX_AT_ExitMUX();	//退出多连接
//	TX_AT_BuildServer();	//建立服务器
//	TX_AT_CloseServer();	//关闭服务器
	
	return true;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值