当前位置: 代码迷 >> 单片机 >> 关于变量互相影响的有关问题?
  详细解决方案

关于变量互相影响的有关问题?

热度:355   发布时间:2016-04-28 14:41:30.0
关于变量互相影响的问题??
char FMReadBinary(uchar ProMode, uchar *FileFlag, uchar ReadLen, uchar *KeyData, uchar *RecBuffer, uchar *Rec_len)
{
char status = 0, STATUS = 0;
uchar idata Buffer[8] = {0};
uchar idata Mac[8] = {0};
uchar MfTempBuffer[200];

///?ü??±¨??????
if(ProMode) MfTempBuffer[0] = PICC_READBIN_PRO; //CLA
else MfTempBuffer[0] = PICC_READBIN;
MfTempBuffer[1] = PICC_READ_BINARY; //INS
MfTempBuffer[2] = FileFlag[0]; //P1
MfTempBuffer[3] = FileFlag[1]; //P2
MfTempBuffer[4] = ReadLen;

if(ProMode)
{
///********调试 ******//
MfTempBuffer[4] = 0x04; //Len
memset(Mac, 0, 8); //????
           FMGetChallenge(0, Mac, &status); //???????ú??

memcpy(Buffer, &Mac[2], 4);
memset(&Buffer[4], 0, 4);
SingleMAC(Buffer, MfTempBuffer, 5, KeyData, Mac); //????MAC??????
memcpy(&MfTempBuffer[5], Mac, 4);

for(status=0; status<8; status++)
{
RecBuffer[status] = Buffer[status];
RecBuffer[status + 8] = Mac[status];
}

memcpy(&RecBuffer[16], MfTempBuffer, 9);
Rec_len[0] = 25;
///**************************////
return 0;
}

status = FMCosCommand(MfTempBuffer, 5, RecBuffer, Rec_len);

return status;
}

请问上述的包括的调试代码中,我使用单片机发送数据到串口助手上显示,请问我通过for循环给RecBuffer[status] = Buffer[status];      RecBuffer[status + 8] = Mac[status];  这两个赋值, 然后在 memcpy(&RecBuffer[16], MfTempBuffer, 9);

问题来了,最终显示的数据是,RecBuffer的前9个字节都为0,我觉得是受memcpy(&RecBuffer[16], MfTempBuffer, 9);这个语句的影响,请问我这样做有问题吗?????为什么数组这样子互相影响的?????????
------解决思路----------------------
你注掉 memcpy(&RecBuffer[16], MfTempBuffer, 9); 试试。
------解决思路----------------------
极大多数情况下,数据莫名其妙的变了,那一定是有地方溢出了, 你仔细检查个数组的长度
  相关解决方案