首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

Mscomm控件 的根本有关问题

2012-02-24 
Mscomm控件 的根本问题!这个控件,的初始设置时 是“SetSettings(9600,n,8,1)” //波特率9600,无校验,8个数

Mscomm控件 的根本问题!
这个控件,的初始设置时 是 “SetSettings("9600,n,8,1")” //波特率9600,无校验,8个数据位,1个停止位。 
  问题就在这里---每次只能接收到8个字符,比如 返回的是10个字符, 他要分两次接受, 第一次是8个,第二次是2个。
请问 高手 ,这个有解决的方法吗?

[解决办法]
加特殊判断符号 比如 “@”
收不到这个不处理 

C/C++ code
void CMiniOS_TestPlatDlg::OnOnCommMscomm1() {    // TODO: Add your control notification handler code here    VARIANT m_input;    COleSafeArray   safearray_inp;     LONG   len,k;       BYTE   rxdata[2048];       CString   strTemp;       int nEvent;        nEvent=m_comm.GetCommEvent();    switch(nEvent)    {    case 2:        k=m_comm.GetInBufferCount();     //½ÓÊÕ»º³åÇøµÄ×Ö·ûÊýÄ¿        if(k>0)        {            m_input=m_comm.GetInput();            safearray_inp=m_input;                 len=safearray_inp.GetOneDimSize();                 for(k=0;k<len;k++)               safearray_inp.GetElement(&k,rxdata+k);              rxdata[k]=0;            strTemp.Format("%s",rxdata);            m_richedit.SetSel(-1,-1);            m_richedit.ReplaceSel(strTemp);            int index=strTemp.Find('@');        if (index==-1)        {            m_RcvData=m_RcvData+strTemp;        }        else        {            m_RcvTemp=strTemp.Right(strTemp.GetLength()-index-1);            m_RcvData=m_RcvData+strTemp.Left(index);            m_richedit.SetSel(-1,-1);            m_richedit.ReplaceSel(m_RcvData);            DealData(m_RcvData);            m_RcvData="";            m_RcvData=m_RcvTemp;                    }                    }    }    }
[解决办法]
调整OnOnCommMscomm触发阀值
[解决办法]
探讨
引用:
引用:
这位大哥, 接收的字符不是我能控制的。 他的最后一位是不确定的。 最好的是这样的: 接收的一次性发给它的所有的字符后,才触发 OnOnCommMscomm1() 事件?

不是 “接收的一次性发给它的所有的字符后,才触发 OnOnCommMscomm1() 事件”
而是接收完所有的字符后再处理
不触发 ……

热点排行