if(connectsta==1&&timex>=600)//连接正常的时候,每6秒发送一次心跳
{
timex=0;
if(sim900a_send_cmd("AT+CIPSEND",">",200)==0)//发送数据
{
sim900a_send_cmd((u8*)0X00,0,0); //发送数据:0X00
delay_ms(20); //必须加延时
sim900a_send_cmd((u8*)0X1A,0,0); //CTRL+Z,结束数据发送,启动一次传输
}else sim900a_send_cmd((u8*)0X1B,0,0); //ESC,取消发送
hbeaterrcnt++;
printf("hbeaterrcnt:%d\r\n",hbeaterrcnt);//方便调试代码
}
你这 hbeaterrcnt不管发送成功不成功都++;
可是下面的代码说是连续8次心跳没有正确发送成功 则重新连接
if(connectsta==2||hbeaterrcnt>8)//连接中断了,或者连续8次心跳没有正确发送成功,则重新连接
{
sim900a_send_cmd("AT+CIPCLOSE=1","CLOSE OK",500); //关闭连接
sim900a_send_cmd("AT+CIPSHUT","SHUT OK",500); //关闭移动场景
sim900a_send_cmd(p,"OK",500); //尝试重新连接
connectsta=0;
hbeaterrcnt=0;
}
请教一下,这是怎么回事??? |