#include "CGH_CheckStateThread.h" #include #include #include "CGH_Printer.h" #include "CGH_Shutter.h" #include "CGH_State.h" CGH_CheckStateThread::CGH_CheckStateThread(QObject* parent) : MyPrinter_Temp(dynamic_cast(parent)) { connect(this, SIGNAL(isDone(int)), MyPrinter_Temp, SLOT(StateUpdate(int))); //MyPrinter_Temp = new CGH_Printer(); // 初始化变量 SLMStateNum = 1; curSLMState_Temp = false; MyShutter_Temp = new CGH_Shutter(); curShutterState_Temp = false; curShutterConnect = false; ControllerID_Temp = -1; curTransTableState_Temp = false; IsConnectedState = false; CCDNum = 0; curCCDState_Temp = false; } CGH_CheckStateThread::~CGH_CheckStateThread() { } void CGH_CheckStateThread::Check() { // 电子快门工作状态检测 curShutterState_Temp = MyPrinter_Temp->get_ShutterState(); //MyShutter_Temp->connect(); curShutterConnect = MyShutter_Temp->isconnected(); if (!curShutterConnect && curShutterState_Temp) isDone(SHUTTER_ERROR); else if (curShutterConnect && !curShutterState_Temp) isDone(SHUTTER_OK); // SLM工作状态检测 curSLMState_Temp = MyPrinter_Temp->get_SLMState(); screen_list = QGuiApplication::screens();//获取屏幕列表 SLMStateNum = screen_list.size();//获取屏幕数量 if (SLMStateNum != 2 && curSLMState_Temp) isDone(SLM_ERROR); else if (SLMStateNum == 2 && !curSLMState_Temp) isDone(SLM_OK); // 平移台工作状态检测 curTransTableState_Temp = MyPrinter_Temp->get_TransTableState(); ControllerID_Temp = MyPrinter_Temp->get_ControllerID(); IsConnectedState = PI_IsConnected(ControllerID_Temp); if (!IsConnectedState && curTransTableState_Temp) isDone(TRANSTABLE_ERROR); else if (IsConnectedState && !curTransTableState_Temp) isDone(TRANSTABLE_OK); // CCD工作状态检测 curCCDState_Temp = MyPrinter_Temp->get_CCDState(); m_pCameraInfos_Temp = QCameraInfo::availableCameras(); CCDNum = m_pCameraInfos_Temp.size(); if (CCDNum == 0 && curCCDState_Temp) isDone(CCD_ERROR); else if (CCDNum > 0 && !curCCDState_Temp) isDone(CCD_OK); } void CGH_CheckStateThread::run() { while (1) { Check(); msleep(500); } }