uint8
AutoCheck(uint8 UserCode,uint8 TransmitCode)
{
uint8
temp;
temp = ~code[3];
if(decode_end)
{
decode_end = 0;
if((UserCode == code[0]) && (TransmitCode == code[2]) && (TransmitCode == temp))
{
return 1;
}
else
{
return 0;
}
}
else
{
return 0;
}
}
do
{
Test_Bug = AutoCheck(TheUserCode,T3Code);
if(Test_Bug)
{
send_char_com(Test_Bug);
send_char_com('0');
send_char_com(code[0]);
send_char_com(code[1]);
send_char_com(code[2]);
send_char_com(code[3]);
Step = t_3;
TX_GUI(Step);
}
if(Step != t_2)
{
WorkLed_ON();
send_char_com(Step);
}
}
while(Step == 2);//t_2
这是从串口调试助手上面得到的结果。
03 30 B4 B4 30 CF 30 30 48 20 30 30 4D 20 32 31 53 0A 53 74 65 70 20 33 3A 20 0A
第一个数03表示Test_Bug=3,太不可思议了。
这个AutoCheck函数是检测红外编码的,要是检测到的红外码跟规定的编码相同则返回一个1,这个do……while循环是当AutoCheck函数返回1的时候将Step = t_3(t_3=3,t_2=2),赋值到下一步,进入下一步检测。
麻烦各位告诉我下有什么情况能够使AutoCheck函数返回一个3?这个BUG太令我无语了。Test_Bug是我刚定义的,不存在在其他地方更改其值的情况。 |