我用CSerialPort类做了一个串口通信的软件,但是在和串口调试软件通信时,我用十六进制的形式发送,串口调试软件接收上前面的数据是对的,但是后面会跟着一堆乱码。不知道怎么回事?我是个新手,请各位大侠帮帮忙!
if(m_ctrlHexSend.GetCheck())
{
char data[512];
memset(data,0,512);
// int len=Str2Hex(m_strSendData,data);
data[0]=0x53;
data[1]=0x4D;
data[2]=0x50;
data[3]=0x32;
data[4]=0x35;
data[5]=0x38;
data[6]=0x52;
data[7]=0x23;
m_Port.WriteToPort(data,8);
TX_count+=(long)((m_strSendData.GetLength()+1)/3);
}

解决方案 »

  1.   

    char data[512];
    数组初始化一下吧  char data[512] = {0};引起乱码可能是要读取“\0”,但是你最后一位可能不是
      

  2.   


    嗯,是少加了\0,现在我也可以接收了,但是想把在接收框的数据存到自定义的数组中,好像一直存不进去哦。
          char data1[512]; 
          nLen+=str.GetLength();
    m_ReceiveData+=str;
    memcpy(data1,str,strlen(str));
      

  3.   

    // CString str ?
    memcpy(data1, str.GetBuffer(0), strlen(str));
      

  4.   


    memcpy(data1, str.GetBuffer(0), str.GetLength());
      

  5.   


    这样可以把数存进去,但是我调试看到,数据好像只会存到data1[0],data1[1].