关于RAW TCP客户端数据发送问题

2019-08-21 12:14发布

最近在学习RAW TCP/IP协议,还在入门测试阶段。直接在原子哥的例程上进行修改。例程是STM32F103ZET6扩展例程中的网络实验4 RAW_TCP客户端实验。拟采用一个字符数组变量 存储要发送的数据然后用指针指向这个数组来发送这个数据。但是不知道为什么程序只能将这个数组发送一次。换另一个数组它也能发送另一个。但是同一个数组不能发送两次。我是直接将轮训函数放入了主程序的while(1)中,这种应该算是长连接吧。第一个是直接引用原子哥的程序tcp_client_test();但是加入了一个flag,只要传输成功就跳出循环。所以没看出问题在哪。到case4的时候第一次发送完成后,再到case4的时候别的功能都正常就是不传送数据。我在猜测是因为 原子哥程序里原本定义的是无类型常量。会不会是因为这个。希望大家能帮帮忙,谢谢了。

tcp_client_test();   
cure_picture(0,0,0,800,480);
while(1)
{  
  switch(CaseState)
  {case 0:                                       
      
            lwip_periodic_handle();
        lwip_pkt_handle();
       break;
   case 1:                                    

             power_adjust(ADCResult0,ADCResult1);
       CaseState_PRE =1;
           break;  
   case 2:                                   
     
          temp_cmp = cure_ing(temp_cure,temp_cmp,jiliang);
           CaseState=6;  
       CaseState_PRE=2;  
         if(temp_cmp==4)
      {temp_cmp=0;
       display(2);
       display(5);
       display(8);
       display(11);
      CaseState = 4;
      }     
                    
          break;
   case 3:                                   

        jiliang_get(temp_cure_PRE);
            CaseState = 6;
       CaseState_PRE=3;
           break;
   case 4:                           
            
          sprintf((char*)send_buf,"cure:%4d,%4d,%4d,%4d",jiliang[0],jiliang[1],jiliang[2],jiliang[3]);
           tcp_client_sendbuf=send_buf;
         tcp_client_flag|=1<<7;
          while(tcp_client_flag & 1<<7)
        {
         lwip_periodic_handle();
              lwip_pkt_handle();
        }
              for(i=0;i<4;i++)
             {
                jiliang[i]=0;
               }   
      
      display(0);
          CaseState = 0;CaseState_PRE=4;
          break;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。