C语言源程序如下:
switch(send_state )
case:0X07
if (to_work_storage_Pointer > to_work_send_Pointer) //存储指针大于发送指针
{
for (i = to_work_send_Pointer; i > to_work_storage_Pointer; i++) //i=发送指针,小于存储指针i++
{
t = IapRead((i * 16) + 14); //判断此条信息是否已经发送完毕
if (t == 0xAA) //有未发送完毕的数据
{
to_work_send_Pointer = i;
send_state = 0X05; //改变状态至5
return;
} //已写入,未发送,下班发送标志为0
else if (t == 0xFF) //数据已经发送完毕
{
to_work_send_Pointer = i;
send_state = 0X06; //改变状态至6
return;
} //未写入,未发送,
}
}
else if (to_work_send_Pointer >= to_work_storage_Pointer) //发送指针大于存储指针
{
for (i = to_work_send_Pointer; i > 127; i++)
{
t = IapRead((i * 16) + 14); //判断此条信息是否已经发送完毕
if (t == 0xAA)
{
to_work_send_Pointer = i;
send_state = 0X05; //改变状态至8
return;
} //已写入,未发送,下班发送标志为0
else if (t == 0xFF)
{
to_work_send_Pointer = i;
send_state = 0X06; //改变状态至11
return;
} //未写入,未发送,
}
}
break;
条件满足的话,是能进去的,但是就是进不去for,这样就不能跳转了。不知到为什么
加入调试代码
else if (to_work_send_Pointer >= to_work_storage_Pointer) //发送指针大于存储指针
{
TX1_write2buff(0XBA);
TX1_write2buff(to_work_send_Pointer);
TX1_write2buff(to_work_storage_Pointer);
TX1_write2buff(send_state);
for (i = to_work_send_Pointer; i > 127; i++)
{
LED = 0;
t = IapRead((i * 16) + 14); //判断此条信息是否已经发送完毕
if (t == 0xAA)
{
to_work_send_Pointer = i;
send_state = 0X05; //改变状态至8
TX1_write2buff(i);
IN5 = 0;
break;
} //已写入,未发送,下班发送标志为0
else if (t == 0xFF)
{
to_work_send_Pointer = i;
send_state = 0X06; //改变状态至11
TX1_write2buff(i);
IN6 = 0;
break;
} //未写入,未发送,
}
IN3 = 0;
}
break;
串口回传的信息如下:BA 00 00 07
IN3灯亮,LED,IN5,IN6灯都不亮,也就是说。程序进了“else if (to_work_send_Pointer >= to_work_storage_Pointer) ”
但是从for处蹭了蹭就是不进去,都不知道怎么回事。
|