#include "StdAfx.h" #include "AllThreadMgr.h" #include "CStringFuc.h" #include "FileMgr.h" #include "WorkTime.h" #include "LogMgr.h" CAllThreadMgr gAllThreadMgr; bool gbStopAllThread= false;//停止所有线程 CAllThreadMgr::CAllThreadMgr(void) { InitThreadInfoVec(); } CAllThreadMgr::~CAllThreadMgr(void) { } //初始化线程容器 void CAllThreadMgr::InitThreadInfoVec() { { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_AutoWorkFlowCtrlThread; ThreadInfo.m_ThreadName = "工作流程控制线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_LaserSleepThread; ThreadInfo.m_ThreadName = "激光休眠线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_GetDataPtThread, ThreadInfo.m_ThreadName = "运行时测量线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_ExecuteStepThread; ThreadInfo.m_ThreadName = "步骤执行线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_FastReadInfoThread; ThreadInfo.m_ThreadName = "状态读取线程(fast)"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_SlowReadInfoThread; ThreadInfo.m_ThreadName = "状态读取线程(slow)"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_PlcReadInfoThread; ThreadInfo.m_ThreadName = "PLC 通信线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_SwitchLaserLddThread; ThreadInfo.m_ThreadName = "激光器ldd 线程"; m_ThreadInfoVec.push_back(ThreadInfo); } #ifdef __LASER_DEVICE_BEAMTECH__ { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_BeamtechSetParToLaserThread; ThreadInfo.m_ThreadName = "激光器参数线程"; m_ThreadInfoVec.push_back(ThreadInfo); } #endif { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_TimingProgressThread; ThreadInfo.m_ThreadName = "进度条线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_RecordTimeThread; ThreadInfo.m_ThreadName = "记录计时线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_WaitTransferLoadEndThread; ThreadInfo.m_ThreadName = "等待load 结束线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_CheckTransferLoadThread; ThreadInfo.m_ThreadName = "检查是否需要load 的线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_DlgDeviceStateInfoTimer; ThreadInfo.m_ThreadName = "状态信息timer1"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_DlgDeviceStateInfoTimer2; ThreadInfo.m_ThreadName = "状态信息timer2"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_ReadLaserPower; ThreadInfo.m_ThreadName = "功率计线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_LaserDisMeterReadThread; ThreadInfo.m_ThreadName = "测距仪通信timer"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_ReadLaserInfoThread; ThreadInfo.m_ThreadName = "绿激光信息读取线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_ReadRedLaserInfoThread; ThreadInfo.m_ThreadName = "红光信息读取线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_AutoTransferFlowThread; ThreadInfo.m_ThreadName = "自动传片测试线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_ReadTransferArmInfoThread; ThreadInfo.m_ThreadName = "TransferArm 通信线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_UpdateSecsDataThread; ThreadInfo.m_ThreadName = "SecsVariable 线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_CtrlHostJobThread; ThreadInfo.m_ThreadName = "CtrlHostJob 线程"; m_ThreadInfoVec.push_back(ThreadInfo); } { CThreadInfo ThreadInfo; ThreadInfo.m_ThreadType = _EThreadType_CyclicRunThread; ThreadInfo.m_ThreadName = "CyclicRun 线程"; m_ThreadInfoVec.push_back(ThreadInfo); } } void CAllThreadMgr::InsertThreadInfoList(CListCtrl &List,bool bInsert) { if(bInsert) List.DeleteAllItems(); int size = m_ThreadInfoVec.size(); for(int i=0;i=0 && idx < size) { if(m_ThreadInfoVec[idx].m_bRunning) { c = RGB_GREEN; } } return c; } //是否有正在运行的线程 bool CAllThreadMgr::HasThreadRunning() { int size = m_ThreadInfoVec.size(); for(int i=0;iWriteDebugLog(s); } } } //绑定线程地址 void CAllThreadMgr::BindingThreadAdr(EThreadType ThreadType,CWinThread*p) { int size = m_ThreadInfoVec.size(); for(int i=0;i