最近在学习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;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
@正点原子 原子哥帮忙看一下。我代码后面复制了如果没连接上,重新连接的那段程序,但是没用。应该怎么解决。
一周热门 更多>