Mscomm控件 的根本问题!
这个控件,的初始设置时 是 “SetSettings("9600,n,8,1")” //波特率9600,无校验,8个数据位,1个停止位。
问题就在这里---每次只能接收到8个字符,比如 返回的是10个字符, 他要分两次接受, 第一次是8个,第二次是2个。
请问 高手 ,这个有解决的方法吗?
[解决办法]
加特殊判断符号 比如 “@”
收不到这个不处理
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触发阀值
[解决办法]