我定义了一个数组 BYTE receivedata1【50】,在调试过程中receivedata1[49]应该为10,但是它好像是receivedata1[32]才是10(它把50转换为16进制了),而receivedata1【50】为0,这是怎么回事?哪位高手能告诉我。

解决方案 »

  1.   

    int rec_length1,rec_length2;
    BYTE receivedata1[50],receivedata2[50],receivedatatemp1[100],receivedatatemp2[100];
        for(BYTE kk=0;kk<100;kk++)
    {
    receivedatatemp1[kk]=0;
    receivedatatemp2[kk]=0;
    }
    for(kk=0;kk<50;kk++)
    {
    receivedata1[kk]=0;
    receivedata2[kk]=0;
    }
    //此处取串口的值
    rec_length1=ReadComm(m_hSlave[0],receivedatatemp1,100);
    rec_length2=ReadComm(m_hSlave[1],receivedatatemp2,100);
        {   
    for(BYTE position=0;position<50;position++)
    {
    if((receivedatatemp1[position]==0x8e)
    &&(receivedatatemp1[position+1]==0)
    &&(receivedatatemp1[position+2]==1)
    &&(receivedatatemp1[position+49]==0x8f))
    {
    for(BYTE datanumber=0;datanumber<50;datanumber++)
    receivedata1[datanumber]=receivedatatemp1[position+datanumber];
    break;
    }
    else
    rec_length1=0;
    }
    }
    //这里判断值,调试时receivedata1[0x31]结果正好是我要的第50个值,而receivedata1[50]不是
    if((receivedata1[0]!=0x8e)||
    (receivedata1[1]!=0)||
    (receivedata1[2]!=1)||
    (receivedata1[47]!=High)||
    (receivedata1[48]!=Low)||
    (receivedata1[49]!=0x8f))
    {
    SerialState1=FALSE;
    }
      

  2.   

    0x31=49
    0x32=50
    vc从零开始计数的,
    你的第1个是他的 receivedata1[0];也就是 receivedata1[0x0];
    你的第2个是他的 receivedata1[1];也就是 receivedata1[0x1];
    你的第3个是他的 receivedata1[2];也就是 receivedata1[0x2];
    ...
    你的第49个是他的 receivedata1[48];也就是 receivedata1[0x30];
    你的第50个是他的 receivedata1[50];也就是 receivedata1[0x31];有问题吗?
    我看没问题。
      

  3.   

    你的第50个是他的 receivedata1[49];也就是 receivedata1[0x31];