CGH_CheckStateThread.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include "CGH_CheckStateThread.h"
  2. #include <qscreen.h>
  3. #include <QGuiApplication>
  4. #include "CGH_Printer.h"
  5. #include "CGH_Shutter.h"
  6. #include "CGH_State.h"
  7. CGH_CheckStateThread::CGH_CheckStateThread(QObject* parent) : MyPrinter_Temp(dynamic_cast<CGH_Printer*>(parent))
  8. {
  9. connect(this, SIGNAL(isDone(int)), MyPrinter_Temp, SLOT(StateUpdate(int)));
  10. //MyPrinter_Temp = new CGH_Printer();
  11. // 初始化变量
  12. SLMStateNum = 1;
  13. curSLMState_Temp = false;
  14. MyShutter_Temp = new CGH_Shutter();
  15. curShutterState_Temp = false;
  16. curShutterConnect = false;
  17. ControllerID_Temp = -1;
  18. curTransTableState_Temp = false;
  19. IsConnectedState = false;
  20. CCDNum = 0;
  21. curCCDState_Temp = false;
  22. }
  23. CGH_CheckStateThread::~CGH_CheckStateThread()
  24. {
  25. }
  26. void CGH_CheckStateThread::Check()
  27. {
  28. // 电子快门工作状态检测
  29. curShutterState_Temp = MyPrinter_Temp->get_ShutterState();
  30. //MyShutter_Temp->connect();
  31. curShutterConnect = MyShutter_Temp->isconnected();
  32. if (!curShutterConnect && curShutterState_Temp)
  33. isDone(SHUTTER_ERROR);
  34. else if (curShutterConnect && !curShutterState_Temp)
  35. isDone(SHUTTER_OK);
  36. // SLM工作状态检测
  37. curSLMState_Temp = MyPrinter_Temp->get_SLMState();
  38. screen_list = QGuiApplication::screens();//获取屏幕列表
  39. SLMStateNum = screen_list.size();//获取屏幕数量
  40. if (SLMStateNum != 2 && curSLMState_Temp)
  41. isDone(SLM_ERROR);
  42. else if (SLMStateNum == 2 && !curSLMState_Temp)
  43. isDone(SLM_OK);
  44. // 平移台工作状态检测
  45. curTransTableState_Temp = MyPrinter_Temp->get_TransTableState();
  46. ControllerID_Temp = MyPrinter_Temp->get_ControllerID();
  47. IsConnectedState = PI_IsConnected(ControllerID_Temp);
  48. if (!IsConnectedState && curTransTableState_Temp)
  49. isDone(TRANSTABLE_ERROR);
  50. else if (IsConnectedState && !curTransTableState_Temp)
  51. isDone(TRANSTABLE_OK);
  52. // CCD工作状态检测
  53. curCCDState_Temp = MyPrinter_Temp->get_CCDState();
  54. m_pCameraInfos_Temp = QCameraInfo::availableCameras();
  55. CCDNum = m_pCameraInfos_Temp.size();
  56. if (CCDNum == 0 && curCCDState_Temp)
  57. isDone(CCD_ERROR);
  58. else if (CCDNum > 0 && !curCCDState_Temp)
  59. isDone(CCD_OK);
  60. }
  61. void CGH_CheckStateThread::run()
  62. {
  63. while (1) {
  64. Check();
  65. msleep(500);
  66. }
  67. }