我在一个线程中不断的从串口中读数据并把它放在一个cstring类中
在另一个线程中我从cstring中取出数据
但是我调试的时候发现串口前几次可以正常读取.. 但在后面却返回了995的错误标号(由于线程退出或应用程序请求,已放弃 I/O 操作。 )
而且在另一个线程中读cstring的时候会出错(提示:user breakpoint called from code at 0x7c92120e)(编译的时候不会出错)
我把代码贴上来请各位帮我看一下
谢谢了///这是读数据的代码 bh为资源共享区
WaitForSingleObject(Muters,500L );
double dTime = ::timeGetTime()/1000.0;
double dValue[2];
dValue[0] = bh[0];//bh为资源共享区
dValue[1] = 5*sin(4*dTime+5);// 正弦参数的设定 ReleaseMutex(Muters);
///////////////////////////////////////////////////////////////////////////////////////////
//这是向bh写数据的线程
DWORD WINAPI FunProc(LPVOID LpParaneter)
{
DWORD length=12;
char ah[14]={"ppppppppppppp"};
while(1)
{
WaitForSingleObject(Muters,4L);
int da=GetLastError();
ReadFile(hCom,ah,12,&length,NULL);//我在这做了一个断点 发现前几次可以读取串口数据...但是后面就返回995 的错误
int d=GetLastError();
ReleaseMutex(Muters);
int dc=GetLastError();
;
}
return 0;
}
在另一个线程中我从cstring中取出数据
但是我调试的时候发现串口前几次可以正常读取.. 但在后面却返回了995的错误标号(由于线程退出或应用程序请求,已放弃 I/O 操作。 )
而且在另一个线程中读cstring的时候会出错(提示:user breakpoint called from code at 0x7c92120e)(编译的时候不会出错)
我把代码贴上来请各位帮我看一下
谢谢了///这是读数据的代码 bh为资源共享区
WaitForSingleObject(Muters,500L );
double dTime = ::timeGetTime()/1000.0;
double dValue[2];
dValue[0] = bh[0];//bh为资源共享区
dValue[1] = 5*sin(4*dTime+5);// 正弦参数的设定 ReleaseMutex(Muters);
///////////////////////////////////////////////////////////////////////////////////////////
//这是向bh写数据的线程
DWORD WINAPI FunProc(LPVOID LpParaneter)
{
DWORD length=12;
char ah[14]={"ppppppppppppp"};
while(1)
{
WaitForSingleObject(Muters,4L);
int da=GetLastError();
ReadFile(hCom,ah,12,&length,NULL);//我在这做了一个断点 发现前几次可以读取串口数据...但是后面就返回995 的错误
int d=GetLastError();
ReleaseMutex(Muters);
int dc=GetLastError();
;
}
return 0;
}
我刚学mfc
谢谢
不好意思DWORD WINAPI FunProc(LPVOID LpParaneter)
{
DWORD length=12;
char ah[14]={"ppppppppppppp"};
while(1)
{
WaitForSingleObject(Muters,4L);
int da=GetLastError();
ReadFile(hCom,ah,12,&length,NULL);//我在这做了一个断点 发现前几次可以读取串口数据...但是后面就返回995 的错误
bh+=ah;// 刚刚打少了不好意思呀
.............
int d=GetLastError();
ReleaseMutex(Muters);
int dc=GetLastError();
;
}
return 0;
}
if(WAIT_OBJECT_0!=WaitForSingleObject(Muters,4L))
{
return;
}
……
我觉得不应该是这么改的..
首先if(WAIT_OBJECT_0!=WaitForSingleObject(Muters,4L))
这条语句说的是函数的返回值不等于WAIT_OBJECT_0才会执行下面的语句块
也就是说当函数没有取得信号的时候执行...
额.. 这就和我的目的相反 了..
还有
我要的效果是没有取得信号的时候是延时等候.. 直到取得信号再执行下面的语句
.而兄弟你的建议却是没有取得信号就跳过受保护的语句块初学C++和MFC.. 说错了请指正..
谢谢