void creat_tcp(void)
{
if(!is_gprs_mode_ok)
return ;
while(1)
{
err ++;
if(err>MAX_ERROR_COUNT)
{
err = 0 ;
// PUT("TCPIP_FALSE");
delay_GSM(100000);
break;
}
delay_GSM(1000);
switch(current_status)
{
case GPRS_OPEN_FINISH:
S_GPRS_OPEN_FINISH();
break ;
case TCPIP_IO_MODE: //get GPRS
S_TCPIP_IO_MODE();
break ;
case TCPIP_CONNECT:
S_TCPIP_CONNECT();
break ;
case TCP_IP_CONNECTING:
S_TCP_IP_CONNECTING();
break ;
case TCP_IP_OK :
PUT(buf_uart3.buf);
return ;
case TCP_IP_NO:
PUT(buf_uart3.buf);
return ;
default:
clear_buf_uart3();
break ;
}
}
}
static void S_GPRS_OPEN_FINISH()
{
clear_buf_uart3();
current_status = TCPIP_IO_MODE ;
}
static void S_TCPIP_IO_MODE()
{
clear_buf_uart3();
current_status = TCPIP_CONNECT ;
send_string_uart3(TM_TYPE_IOMODE); //0,2,0
// PUT("S_TCPIP_IO_MODE \r\n");
}
static void S_TCPIP_CONNECT()
{
current_status = TCP_IP_CONNECTING ;
__GPRS_TCPIP();
}
static void S_TCP_IP_CONNECTING()
{
char *ret_val = NULL ;
static unsigned int count = 0 ;
ret_val = strstr((const char*)buf_uart3.buf,"CONNECT");
PUT(buf_uart3.buf);
// PUT("S_TCP_IP_CONNECTING\r\n");
if (ret_val)
{
current_status = TCP_IP_OK ;
}
else
{
count ++ ;
delay_GSM(2000);
if (count == 20)
{
current_status = TCP_IP_NO ;
count = 0 ;
}
}
}
#define CONSER "AT%IPOPENX=1,"TCP","202.93.167.166",6000\x00D\x00A"
void __GPRS_TCPIP()
{
clear_buf_uart3();
send_string_uart3(CONSER);
}
代码如上,GPRS已经打开,但是不知道为什么,就是连接不上服务器。 |