不是m_CtrlCom.SetRThreshold(1);1个字符就触发OnCom事件吗?
为何我是将一串数据收完了过后才进一次
void MyDlg::OnCom()
if(m_CtrlCom.GetCommEvent() == 2)
{
variant_inp = m_CtrlCom.GetInput();
safearray_inp = variant_inp;
len = safearray_inp.GetOneDimSize();
for(k = 0;k<len;k++)
    safearray_inp.GetElement(&k,rxdata+k);
}

解决方案 »

  1.   

    来一个char触发一次直到缓冲满了为止,清空缓冲后来一个char还会激发一次。我想是这样的吧。
      

  2.   

    我再次测试了一下,准确是这样的:
    每8个字符就进OnCom事件一次。
    这个8是怎么回事,难道缓冲区默认的吗?
      

  3.   

    CMSComm m_Com;
    m_Com.SetRThreshold(1);//这里的1表示有1个字符引发一个事件
    这些都跟串口的初始化有关,当然这些函数都有一些默认得值!
    你说是8个字符就引发一个OnCom事件,我觉得是不大可能,除非你把它设成
    m_Comj.SetRThreshold(8);
      

  4.   

    确实是8个字符才进一次OnCom事件,
    我的字符串有20个字符,
    我设了个断点在最后的同步码,确实只进了3次 OnCom.