CMessageBox.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. #pragma once
  2. //#pragma warning(disable:4251)
  3. #include <vector>
  4. #include <mutex>
  5. #include <map>
  6. #include "string.h"
  7. #include "dt.h"
  8. #include "CLog.h"
  9. #include <functional>
  10. enum BUTTON_TYPE
  11. {
  12. CLOSE_BUTTON = 0x1, //关闭
  13. STOP_BUTTON = 0x2, //终止
  14. REPEAT_BUTTON = 0x4,//重复
  15. IGNORE_BUTTON = 0x8,//忽略
  16. };
  17. typedef struct
  18. {
  19. int eViewButton; //弹框需显示的按钮(BUTTON_TYPE)的组合
  20. LogStream::LogLevel iLevel; //报警级别
  21. long iId; //报警Id
  22. std::string strDescribe; //报警描述
  23. std::string strTip; //报警提示
  24. std::string strHelp; //报警帮助信息
  25. }MESSAGE_INFO;
  26. enum AlarmID
  27. {
  28. //初始化错误
  29. SoftWareInitError,
  30. ReadDBError,
  31. GetAxisError,
  32. CardInitError,
  33. ModuleInitError,
  34. //轴
  35. ZHotZone,
  36. XHotZone,
  37. YHotZone,
  38. AxisMoveError,
  39. AxisStopError,
  40. GetAxisPosError,
  41. GetCurrentError,
  42. ChangeForceCurrentError,
  43. AxisOnError,
  44. AxisOffError,
  45. AxisHomeError,
  46. AxisTimeOut,
  47. RunAcsBufferError,
  48. StopAcsBufferError,
  49. WriteAcsBufferError,
  50. GetAcsBufferError,
  51. WriteSocketError,
  52. GetSocketError,
  53. WriteSerialError,
  54. SetAxisParamError,
  55. //IO
  56. GetIOStatusError,
  57. SetIOError,
  58. //气缸
  59. CylinderTimeOut,
  60. //坐标系
  61. CoordMoveError,
  62. CoordTimeOut,
  63. //模组
  64. DieLose, //晶粒丢失
  65. NozzleBlocked, //吸嘴堵塞
  66. ExceedEjectorMaxLifeTime,
  67. ExceedNozzleMaxLifeTime,
  68. WaitTemperatureTimeOut,
  69. NozzleNotExist,
  70. NozzleHavedExist,
  71. UnloadNozzleFail,
  72. LoadNozzleFail,
  73. WaferZAtUpPos,
  74. WaferRingNotInPos,
  75. WaferRunOut,
  76. //视觉
  77. CameraGrabFail,
  78. TempIdWrong,
  79. PRCameraIdWrong,
  80. CreateTempError,
  81. SearchTempError,
  82. SearchTempWithoutXResult,
  83. SearchTempWithoutYResult,
  84. SearchTempWithoutAngleResult,
  85. AlnExceedDeviation,
  86. // 标定
  87. RCalibError,
  88. HandEyeCalibError,
  89. FindForceTimeOut,
  90. ExceedMaxPressDis,//超出最大压合距离
  91. //提示
  92. PleasePlaceCalss,
  93. CalibHalfStop,
  94. //其他
  95. LightCtrlConnectError,
  96. SetLightError,
  97. GetLightError,
  98. SetTemperatureError,
  99. GetTemperatureError,
  100. TemperatureCtrlConnectError,
  101. TemperatureCtrlTypeError,
  102. };
  103. struct MixAlarmMessge
  104. {
  105. AlarmID id;
  106. std::string chineseInfo;
  107. std::string EnglishInfo;
  108. };
  109. //报警弹框回调函数
  110. //typedef BUTTON_TYPE(*CallMessageBox) (MESSAGE_INFO stMsgInfo);
  111. using usStartMessWnd = std::function<BUTTON_TYPE(MESSAGE_INFO)>;
  112. class __declspec(dllexport) CMessageBox
  113. {
  114. private:
  115. static std::mutex m_Mutex;
  116. static CMessageBox* m_pMessageBox;
  117. std::vector<MESSAGE_INFO> m_vecMessageBox;
  118. usStartMessWnd m_funCallMessageBox = nullptr;
  119. std::mutex m_PopBoxMutex;
  120. //用于消息发布
  121. //void* m_pPubSocket;
  122. //void* m_pSubscriberSocket;
  123. long Init();
  124. void AddPopMassage(MESSAGE_INFO stMsgInfo);
  125. void ErasePopMassage(int iId);
  126. public:
  127. // 获取单实例对象
  128. static CMessageBox* GetInstance();
  129. //static CMessageBox* GetInstance();
  130. void SetCallMessageBoxFunc(usStartMessWnd func);
  131. void ClearAllPopMassage();
  132. BUTTON_TYPE PopMassageBox(long iId, std::string strDescribe,
  133. LogStream::LogLevel iLevel = LogStream::LogLevel::Error, int eViewButton = BUTTON_TYPE::CLOSE_BUTTON, std::string strTip="", std::string strHelp = "");
  134. };