主题:我个人认为是延时子程序的问题,请高手帮忙看下
现象十分怪异,write和read分别为工控仪表上的读地址和写地址操作,先写,延时一段时候后读地址看是否与写的一样这个不废话了
问题在这里read()打上断点,然后调试运行,按下按钮后,如果什么都不动,就无法走到read()这步,如果你移动了下鼠标或者按了下键盘什么的程序就很正常的走下去了。因为需要反复写读,可如果ontimer后调用就不存在这样的问题。
delaytimer打上断点后,是可以走到延时子程序里面去的,so。。
我个人认为是延时子程序的问题,有高手来帮忙解答下吗?
void Cdilag::onbtnstart()
{
write();
delaytimer(500);
read();
}
void Cdilag::onTimer()
{
onbtnstart();
}
void write()
{
.....
}
void read()
{
....
}
void delayTime(UINT time) //延时函数
{
DWORD dwStart = timeGetTime();
DWORD dwEnd = dwStart;
do
{
MSG msg;
GetMessage(&msg,NULL,0,0);
TranslateMessage(&msg);
DispatchMessage(&msg);
dwEnd = timeGetTime()-dwStart;
}while(dwEnd <time);
}
问题在这里read()打上断点,然后调试运行,按下按钮后,如果什么都不动,就无法走到read()这步,如果你移动了下鼠标或者按了下键盘什么的程序就很正常的走下去了。因为需要反复写读,可如果ontimer后调用就不存在这样的问题。
delaytimer打上断点后,是可以走到延时子程序里面去的,so。。
我个人认为是延时子程序的问题,有高手来帮忙解答下吗?
void Cdilag::onbtnstart()
{
write();
delaytimer(500);
read();
}
void Cdilag::onTimer()
{
onbtnstart();
}
void write()
{
.....
}
void read()
{
....
}
void delayTime(UINT time) //延时函数
{
DWORD dwStart = timeGetTime();
DWORD dwEnd = dwStart;
do
{
MSG msg;
GetMessage(&msg,NULL,0,0);
TranslateMessage(&msg);
DispatchMessage(&msg);
dwEnd = timeGetTime()-dwStart;
}while(dwEnd <time);
}