求助高手!VC写的程序没有任何提示就莫名其妙自动关闭了
求助高手!我用VC写了一向单片机采集数据的程序,采用GPIB接口通信,调用了Agilent visa中的函数.程序运行一会就没有任何提示莫名其妙的自动关闭了.有时候运行几秒就关闭了有时运行几分钟才关闭.关闭的时候是没有任何提示信息的.请问下大家什么情况会出现让程序莫名其妙的关闭呢?
代码如下
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
CNTDlg* pDlg = (CNTDlg*) lpParameter;
char buf [256] = {0};
CString message;
int m_Err = 0;
while(1)
{
if (pDlg->m_Start)
{
while ((viScanf(pDlg->vi, "%t", buf) != VI_SUCCESS))//就是这句会让程序自动关闭
{
m_Err++;
if (m_Err == 1)
{
break;
}
}
if (m_Err == 1)
{
m_Err = 0;
AfxMessageBox("数据接收出现错误,可能仪器已经关闭,或者通信电缆没插好!”");
pDlg->KillTimer(1);
pDlg->m_Start = false;
viClose(pDlg->vi);
viClose(pDlg->defaultRM);
break;
}
//这里是一些将接收到的数据处理代码
Sleep(500);
}
}
return 0;
}
让程序自动关闭的代码我也已经找到while ((viScanf(pDlg->vi, "%t", buf) != VI_SUCCESS))
就是这句,去掉程序就不会自动关闭
原因我也已经基本查明,可能是PC请求单片机数据的时候时间过长,因为单片机程序中我用了中断,中断程序执行时间稍微过长就会出现那样的问题,把中断去掉或在中断中只加两三句话一切正常.应该是单片机正在和PC通信的时候受到了中断.
单片机程序我不能改动,中断一定需要并且时间也不好改,我只能改PC机程序。PC上数据接收都是正确的,就仅仅是莫名其妙的关闭,请问有什么好的解决方法呢?谢谢!