|
C語言源程序如下:
switch(send_state )
case:0X07
if (to_work_storage_Pointer > to_work_send_Pointer) //存儲指針大于發(fā)送指針
{
for (i = to_work_send_Pointer; i > to_work_storage_Pointer; i++) //i=發(fā)送指針,小于存儲指針i++
{
t = IapRead((i * 16) + 14); //判斷此條信息是否已經(jīng)發(fā)送完畢
if (t == 0xAA) //有未發(fā)送完畢的數(shù)據(jù)
{
to_work_send_Pointer = i;
send_state = 0X05; //改變狀態(tài)至5
return;
} //已寫入,未發(fā)送,下班發(fā)送標(biāo)志為0
else if (t == 0xFF) //數(shù)據(jù)已經(jīng)發(fā)送完畢
{
to_work_send_Pointer = i;
send_state = 0X06; //改變狀態(tài)至6
return;
} //未寫入,未發(fā)送,
}
}
else if (to_work_send_Pointer >= to_work_storage_Pointer) //發(fā)送指針大于存儲指針
{
for (i = to_work_send_Pointer; i > 127; i++)
{
t = IapRead((i * 16) + 14); //判斷此條信息是否已經(jīng)發(fā)送完畢
if (t == 0xAA)
{
to_work_send_Pointer = i;
send_state = 0X05; //改變狀態(tài)至8
return;
} //已寫入,未發(fā)送,下班發(fā)送標(biāo)志為0
else if (t == 0xFF)
{
to_work_send_Pointer = i;
send_state = 0X06; //改變狀態(tài)至11
return;
} //未寫入,未發(fā)送,
}
}
break;
條件滿足的話,是能進(jìn)去的,但是就是進(jìn)不去for,這樣就不能跳轉(zhuǎn)了。不知到為什么
加入調(diào)試代碼
else if (to_work_send_Pointer >= to_work_storage_Pointer) //發(fā)送指針大于存儲指針
{
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); //判斷此條信息是否已經(jīng)發(fā)送完畢
if (t == 0xAA)
{
to_work_send_Pointer = i;
send_state = 0X05; //改變狀態(tài)至8
TX1_write2buff(i);
IN5 = 0;
break;
} //已寫入,未發(fā)送,下班發(fā)送標(biāo)志為0
else if (t == 0xFF)
{
to_work_send_Pointer = i;
send_state = 0X06; //改變狀態(tài)至11
TX1_write2buff(i);
IN6 = 0;
break;
} //未寫入,未發(fā)送,
}
IN3 = 0;
}
break;
串口回傳的信息如下:BA 00 00 07
IN3燈亮,LED,IN5,IN6燈都不亮,也就是說。程序進(jìn)了“else if (to_work_send_Pointer >= to_work_storage_Pointer) ”
但是從for處蹭了蹭就是不進(jìn)去,都不知道怎么回事。
|
|