VARIANT variant_inp;
COleSafeArray safearray_inp;
long len,k;
CString stringtemp;
    m_strRXData ="";       //清空显示区
    UpdateData(false);     
    int a =m_ctrlComm.GetInBufferCount();
    variant_inp =m_ctrlComm.GetInput();  //读缓冲区
    safearray_inp =variant_inp;          //variant 变量转换成ColeSafeArray 
    len =safearray_inp.GetOneDimSize();  //得到有效数据长度 
    
    for(k=0;k<len;k++)
    {
      safearray_inp.GetElement(&k,rxdata+k); //转换为byte型数组
    }
memcpy(m_strRXData.GetBufferSetLength(k+1),rxdata,k);
//    for(k=0;k<len;k++)     //将数组转化为CString 型
//    {
//    BYTE bt=*(char *)(rxdata+k);   //byte 型 
//       stringtemp.Format("%c",bt);       //字符型
//    m_strRXData +=stringtemp;
//    }
rxdata[k] ='\0';
// m_strRXData =CString(rxdata);
m_RXDCount.Format("%d",len);
    UpdateData(false);          //显示收到的数据
经过测试,变量len 返回得结果正确,变量bt 返回字符正确,变量a 返回得数据少于len,正确得情况下应相等才对,而且edit控件变量显示得数据也少了,真奇怪呀! 
希望各位高手帮忙解决,谢谢拉!