不是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);
}
为何我是将一串数据收完了过后才进一次
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);
}
每8个字符就进OnCom事件一次。
这个8是怎么回事,难道缓冲区默认的吗?
m_Com.SetRThreshold(1);//这里的1表示有1个字符引发一个事件
这些都跟串口的初始化有关,当然这些函数都有一些默认得值!
你说是8个字符就引发一个OnCom事件,我觉得是不大可能,除非你把它设成
m_Comj.SetRThreshold(8);
我的字符串有20个字符,
我设了个断点在最后的同步码,确实只进了3次 OnCom.