else if(size==
10)
//10个字节 10进制数
{
tempcard=strtoul((
const char*)cardnum,
0,
10);
//将
cardnum[
0]=tempcard>>
24&
0x00ff;
//最高位
cardnum[
1]=tempcard>>
16&
0x00ff;
cardnum[2]=tempcard>>
8&
0x00ff;
cardnum[3]=tempcard&
0x00ff;
}
上述语句中,使用strtoul()函数,如果cardnum转化后的超出tempcard(int)的范围,则tempcard的值为0xFFFF FFFF ,这样就导致card[]数组的值全为0xFF,则与flash中的值一致,刷卡开门成功;
解决
(1)每次串口接收结尾添加字符串结束符
(2)若值为0xFFFF FFFF,无需与flash存储内容比较,直接认为无效数据。
转载于:https://www.cnblogs.com/fyp7077/p/8521018.html