Module.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include "RunnableModule.h"
  3. #include "libaray_symbols.h"
  4. #include "LockFreeQueue.h"
  5. #include <QtCore/QDateTime>
  6. #include <QtCore/QReadWriteLock>
  7. enum EAlarmStatus
  8. {
  9. EAS_Normal = 0,
  10. EAS_Breaked = 1,
  11. EAS_Recover = 2
  12. };
  13. // 全局唯一实例
  14. // 数据通断告警
  15. class COMMRECOGNITION_EXPORT Module : public RunnableModule
  16. {
  17. public:
  18. Module();
  19. private:
  20. struct tagParam{
  21. uint uWinSize = 3;
  22. uint uIntervalMS = 1000;
  23. int nStatus = EAS_Breaked;
  24. bool bChanged = false;
  25. };
  26. private:
  27. DataConsumer* m_pDataConsumer = nullptr;
  28. std::vector<std::string> m_szOutputs; // 数据名称
  29. std::map<std::string,tagParam> m_mpParamConfig; // 数据参数
  30. uint m_nLoopIntervalMS; // 检测周期
  31. private:
  32. std::map<std::string,QDateTime> m_mpDataValue; // 测量数据
  33. QReadWriteLock m_objDataLock;
  34. private:
  35. void pubStatus(std::string,int);
  36. void Check();
  37. virtual void Run();
  38. public:
  39. virtual void Setup(ModuleInfo mi);
  40. virtual void regConsumer(DataConsumer* pDC) ;
  41. virtual bool isInheritedFrom(std::string tp);
  42. virtual void OnSubData(std::string name,std::string val);
  43. };
  44. extern "C" {//一定要添加上
  45. COMMRECOGNITION_EXPORT BaseModule* instance();
  46. COMMRECOGNITION_EXPORT void destroy(BaseModule*);
  47. }