在原子哥的例程上稍微改动了一下,建立STA TCP client 模式下与电脑的通信。接收数据没有问题,但是发送数据只有第一次成功,之后总是连接不上。不知道什么问题,还请大家赐教。 
 
发送数据部分代码如下:- //WIFI STA ·¢ËÍÊý¾Ý
 
 - //length :·¢ËÍÊý¾Ý³¤¶È
 
 - //pointer:Ö¸Ïò·¢ËÍÊý¾Ý  £¡£¡£¡£¡£¡£¡£¡£¡Ö¸ÕëÀàÐ͸ù¾ÝÊý¾Ý²»Í¬¿ÉÄÜÒª¸Ä£¡£¡£¡
 
 - void atk_8266_wifista_send(u8 length,char *pointer)
 
 - {
 
 -         u8 *q;
 
 -         u8  j;
 
 -         q=mymalloc(32);                                                        //ÉêÇë32×Ö½ÚÄÚ´æ                        
 
 -         atk_8266_quit_trans();
 
 -   while(atk_8266_send_cmd("AT+CIPSEND","OK",20));      //¿ªÊ¼Í¸´«           
 
 -         {
 
 -      if(!atk_8266_send_cmd("AT+CIPSEND","ERROR",20))//Èô¶Ï¿ª£¬ÔòÖØÐÂÁ¬½Ó
 
 -                         {
 
 -                         sprintf((char*)q,"AT+CIPSTART="TCP","%s",%s","192.168.43.186","8080");    //ÅäÖÃÄ¿±êTCP·þÎñÆ÷
 
 -                         while(atk_8266_send_cmd(q,"OK",200));
 
 -                 
 
 -                         atk_8266_send_cmd("AT+CIPMODE=1","OK",200);      //´«ÊäģʽΪ£ºÍ¸´«                        
 
 -                         USART2_RX_STA=0;
 
 -                         atk_8266_quit_trans();
 
 -                         }
 
 -         }                                                                                
 
 -               for(j=0;j<length;j++)                                                        //Ñ»··¢ËÍÊý¾Ý
 
 -              {
 
 -             while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET); //Ñ»··¢ËÍ,Ö±µ½·¢ËÍÍê±Ï   
 
 -                   USART_SendData(USART2,*(pointer++)); 
 
 -              } 
 
 -                                 
 
 -         myfree(q);                //ÊÍ·ÅÄÚ´æ 
 
 -         
 
 - }
 
  
  
仿真死在这一步:-   while(atk_8266_send_cmd("AT+CIPSEND","OK",20));      //¿ªÊ¼Í¸´«           
 
 -         {
 
 -      if(!atk_8266_send_cmd("AT+CIPSEND","ERROR",20))//Èô¶Ï¿ª£¬ÔòÖØÐÂÁ¬½Ó
 
 -                         {
 
 -                         sprintf((char*)q,"AT+CIPSTART="TCP","%s",%s","192.168.43.186","8080");    //ÅäÖÃÄ¿±êTCP·þÎñÆ÷
 
 -                         while(atk_8266_send_cmd(q,"OK",200));
 
 -                 
 
 -                         atk_8266_send_cmd("AT+CIPMODE=1","OK",200);      //´«ÊäģʽΪ£ºÍ¸´«                        
 
 -                         USART2_RX_STA=0;
 
 -                         atk_8266_quit_trans();
 
 -                         }
 
 -         }                                                                                
 
  
电脑接收结果如下:- 【Receive from 192.168.43.254 : 25700】:
 
 - AT+CIPSEND
 
  
- L0E+++
 
 - AT
 
  
- AT+CIPSEND
 
  
- AT+CIPSEND
 
  
- AT+CIPSEND
 
  
- AT+CIPSEND
 
  
- AT+CIPSEND
 
  
- AT+CIPSEND
 
  
- AT+CIPSEND
 
  
- AT+CIPSEND
 
  
- AT+CIPSEND
 
 
 
 
 
  |