if(tcppcb) //′′½¨3é1|
{
IP4_ADDR(&rmtipaddr,lwipdev.remoteip[0],lwipdev.remoteip[1],lwipdev.remoteip[2],lwipdev.remoteip[3]);
tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected); //ᬽóμ½Ä¿μÄμØÖ·μÄÖ¸¶¨¶Ë¿úéÏ,μ±á¬½ó3é1|oó»Øμ÷tcp_client_connected()oˉêy
}else res=1;
while(res==0)
{
key=KEY_Scan(0);
if(key==WKUP_PRES)break;
if(key==KEY0_PRES)//KEY0°′ÏÂáË,·¢Ëíêy¾Y
{
tcp_client_flag|=1<<7;//±ê¼Çòa·¢Ëíêy¾Y
}
if(tcp_client_flag&1<<6)//êÇ·ñêÕμ½êy¾Y?
{
LCD_Fill(30,250,lcddev.width-1,lcddev.height-1,WHITE);//ÇåéÏò»′Îêy¾Y
LCD_ShowString(30,250,lcddev.width-30,lcddev.height-230,16,tcp_client_recvbuf);//ÏÔê¾½óêÕμ½μÄêy¾Y
tcp_client_flag&=~(1<<6);//±ê¼Çêy¾YòѾ-±»′|àíáË.
}
if(tcp_client_flag&1<<5)//êÇ·ñᬽóéÏ?
{
LCD_ShowString(30,210,lcddev.width-30,lcddev.height-190,16,"STATUS:Connected ");//ìáê¾ÏûÏ¢
POINT_COLOR=RED;
LCD_ShowString(30,230,lcddev.width-30,lcddev.height-190,16,"Receive Data:");//ìáê¾ÏûÏ¢
POINT_COLOR=BLUE;//à¶é«×Öìå
}else if((tcp_client_flag&1<<5)==0)
{
LCD_ShowString(30,210,190,16,16,"STATUS

isconnected");
LCD_Fill(30,230,lcddev.width-1,lcddev.height-1,WHITE);//ÇåÆá
}
lwip_periodic_handle();
delay_ms(2);
t++;
if(t==200)
{
if((tcp_client_flag&1<<5)==0)//Î′ᬽóéÏ,Ôò3¢êÔÖØá¬
{
tcp_client_connection_close(tcppcb,0);//1رÕᬽó
tcppcb=tcp_new(); //′′½¨ò»¸öDÂμÄpcb
if(tcppcb) //′′½¨3é1|
{
tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);//ᬽóμ½Ä¿μÄμØÖ·μÄÖ¸¶¨¶Ë¿úéÏ,μ±á¬½ó3é1|oó»Øμ÷tcp_client_connected()oˉêy
}
}
t=0;
LED0=!LED0;
}
}
tcp_client_connection_close(tcppcb,0);//1رÕTCP Clientᬽó
LCD_Clear(WHITE);
POINT_COLOR = RED;
LCD_ShowString(30,30,200,16,16,"Explorer STM32F4");
LCD_ShowString(30,50,200,16,16,"TCP Client Test");
LCD_ShowString(30,70,200,16,16,"ATOM@ALIENTEK");
POINT_COLOR=BLUE;
LCD_ShowString(30,90,200,16,16,"Connect break£¡");
LCD_ShowString(30,110,200,16,16,"KEY1:Connect");
myfree(SRAMIN,tbuf);
}
有个疑问就是tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected); 这个回调函数是在 while(res==0)外面创建的,创建完就进while(res==0),但是在while里面没看到有回调的字眼呀,请问下是怎样执行回调的呢?
一周热门 更多>