关键是这个子线程函数没运行
相关代码如下
这个是主线程判断是否readfile线程死掉,
TerminateThread(Comh->m_hThread,0);//结束线程
Sleep(1000);
BOOL ret=::GetExitCodeThread(Comh->m_hThread,&dwExit);//根据句柄获取线程的状态
if(dwExit!=STILL_ACTIVE)//线程已经挂掉则重新创建线程
{ if (Comh->m_hThread != NULL)
CloseHandle(Comh->m_hThread);//释放线程内存 Sleep(5000);
Comh = AfxBeginThread(RecvComDataThread, NULL, THREAD_PRIORITY_NORMAL);//重新创建线程
WriteLog("串口线程重新创建,线程id=%d,当前时间=%d",Comh->m_nThreadID,time(NULL));
}这个是realfile 线程读数据
while(true) //从缓存写入内存
{
if (!g_pSerialComm[k]->ReadByte())//返回false为读到无效数据,如果15次内没读到有效数据则先解包
{
nReadLen = GetDataCounter(&g_pSerialComm[k]->Buff);
// 超过5个包的大小
if (nReadLen >= 5*sizeof(NODE_TRANS_DATA))
{
WriteLog("串口[%s]读满5个包...", g_pSerialComm[k]->GetPort());
break;
}
}
} 小弟我是新来的。希望得到各位大侠的帮助。就是偶尔的情况,在readfile堵死了。
相关代码如下
这个是主线程判断是否readfile线程死掉,
TerminateThread(Comh->m_hThread,0);//结束线程
Sleep(1000);
BOOL ret=::GetExitCodeThread(Comh->m_hThread,&dwExit);//根据句柄获取线程的状态
if(dwExit!=STILL_ACTIVE)//线程已经挂掉则重新创建线程
{ if (Comh->m_hThread != NULL)
CloseHandle(Comh->m_hThread);//释放线程内存 Sleep(5000);
Comh = AfxBeginThread(RecvComDataThread, NULL, THREAD_PRIORITY_NORMAL);//重新创建线程
WriteLog("串口线程重新创建,线程id=%d,当前时间=%d",Comh->m_nThreadID,time(NULL));
}这个是realfile 线程读数据
while(true) //从缓存写入内存
{
if (!g_pSerialComm[k]->ReadByte())//返回false为读到无效数据,如果15次内没读到有效数据则先解包
{
nReadLen = GetDataCounter(&g_pSerialComm[k]->Buff);
// 超过5个包的大小
if (nReadLen >= 5*sizeof(NODE_TRANS_DATA))
{
WriteLog("串口[%s]读满5个包...", g_pSerialComm[k]->GetPort());
break;
}
}
} 小弟我是新来的。希望得到各位大侠的帮助。就是偶尔的情况,在readfile堵死了。
解决方案 »
- 字符串转浮点数?
- 如何在ATL ACtiveX中用代码读写所在网页的“页面设置”的数据!!!,不够可加分
- 急!急!急! 寻找用vc编的词法分析器
- 再次求教如何统计一个.txt文件中的汉字、字母、数字各有多少个?
- c#里可以用Opacity属性控制窗体的透明度,mfc里可以么?
- 同志们,我实在忍不住了:CInternetSession.OpenURL打开具有重定向的网页,如何获取重定向文件名?
- 我学过C,自学了C++,想学VC,可不知道从何入手?哪位大哥帮忙指点一下??
- “菜鸟”问 问题。。但是很想知道 谢谢!
- 请教一个关于CString的问题?
- 在ATL中如何定义HWND窗口句柄类型的参数?
- 新手做日志高分 把这个用vs2008编译好所有程序打包给我[email protected]
- 请问为什么我得不到C后面的:呢??
RecvComDataThread没运行大哥们咋办啊