我的接收函数
void CProtocol12Dlg::OnComm() 
{
m_strReceive=_T("");
VARIANT variant_inp;
    COleSafeArray safearray_inp;
    LONG len,k;
    BYTE rxdata[2048]; 
    CString strtemp;

if(m_ctrlComm.GetCommEvent()==2) 
    {             
         variant_inp=m_ctrlComm.GetInput(); 
safearray_inp=variant_inp; 
len=safearray_inp.GetOneDimSize(); 
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);
for(k=0;k<len;k++) 
{
BYTE bt=*(char*)(rxdata+k); 
strtemp.Format("%c",bt); 
m_strReceive+=strtemp;
char ch=(char) bt;
}
    }

m_strReceive02=m_strReceive.Left(1);
m_strReceive03=m_strReceive.Left(2);
m_strReceive03=m_strReceive03.Right(1);
m_strReceive04=m_strReceive.Left(3);
m_strReceive04=m_strReceive04.Right(1);
m_strReceive05=m_strReceive.Left(4);
m_strReceive05=m_strReceive05.Right(1);
m_strReceive06=m_strReceive.Left(5);
m_strReceive06=m_strReceive06.Right(1);
m_strReceive07=m_strReceive.Left(6);
m_strReceive07=m_strReceive07.Right(1);
m_strReceive08=m_strReceive.Left(7);
m_strReceive08=m_strReceive08.Right(1);
m_strReceive09=m_strReceive.Left(8);
m_strReceive09=m_strReceive09.Right(1);
UpdateData(false); 
}

解决方案 »

  1.   

    mscomm 即使设成RThreshold属性设置为1,也是7,8个字符才接受一次。速度慢
      

  2.   

    判断某个特殊字符呀!如最后加入一个 chr(13).判断
    BYTE bt=*(char*)(rxdata+k); 
    strtemp.Format("%c",bt); 
    判断strtemp==chr(13);
    然后把m_strReceive里面的值全部读出来并清空
      

  3.   

    我已这么做了,看下面这段:
    m_strReceive02=m_strReceive.Left(1);
    m_strReceive03=m_strReceive.Left(2);
    m_strReceive03=m_strReceive03.Right(1);
    m_strReceive04=m_strReceive.Left(3);
    m_strReceive04=m_strReceive04.Right(1);
    m_strReceive05=m_strReceive.Left(4);
    m_strReceive05=m_strReceive05.Right(1);
    m_strReceive06=m_strReceive.Left(5);
    m_strReceive06=m_strReceive06.Right(1);
    m_strReceive07=m_strReceive.Left(6);
    m_strReceive07=m_strReceive07.Right(1);
    m_strReceive08=m_strReceive.Left(7);
    m_strReceive08=m_strReceive08.Right(1);
    m_strReceive09=m_strReceive.Left(8);我在这里的一个字节总是为倒数第二个字节,如果我一步步,运行又非厂对.但编译出运行就出错. m_strReceive09=m_strReceive09.Right(1);
      

  4.   

    m_strReceive 你的程序里没有确定它是几个字符长呀!可能一次收到7个。那怎么办?