如何让程序等待Cserialport串口类接收所有数据
我操作的仪器返回值中有"OK"作为结束标志,并且需要好几秒才能返回所有数据。所以我在程序运行过程中必须等待oncomm函数接受数据,并且判断收到"OK"才能继续向下运行程序。我写了个判断的函数,可是总是进入死循环,烦请大家帮我看看哪,谢谢了!!
//这个是接受数据的oncomm函数,predata保存上一个数据
void CSpectResponceDlg::OnComm(WPARAM ch,LPARAM port)
{
if (preData=='O'&&ch=='K') commOkFlag=1;
preData=ch;
}
//这个是向串口写数据(向仪器发送命令)
CString m_strSend;
m_strSend="?\r";
m_serialPort.WriteToPort(m_strSend.GetBuffer(m_strSend.GetLength()));
if (!Is7iswOk()) //马上运行这个函数判断仪器返回是否成功
{
MessageBox("通讯超时,请检查设备!",MB_OK);
return;
}
//下面这个就是我烦了很久的问题,是我判断仪器返回是否成功的代码,想破头都没弄明白哪里出错,总是进入死循环
int CSpectResponceDlg::Is7iswOk()
{
int i=0;
while (!commOkFlag)
{
Sleep(60);
i++;
if(i==2000) return 0; //2分钟还没搞定的话超时返回
}
commOkFlag=0;
return 1;
}