Module.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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_OverThan = 1,
  11. EAS_UnderThan = 2,
  12. EAS_Both = 3
  13. };
  14. // 全局唯一实例
  15. class ALARMRECOGNITION_EXPORT Module : public BaseModule
  16. {
  17. public:
  18. Module();
  19. private:
  20. struct tagRange{
  21. double dbMax = __DBL_MAX__;
  22. double dbMin = __DBL_MIN__;
  23. uint uWinSize = 5;
  24. int nStatus = EAS_Normal;
  25. };
  26. struct tagKeyValue{
  27. std::string name = "";
  28. double value = 0;
  29. QDateTime tm;
  30. tagKeyValue()
  31. {
  32. tm = QDateTime::currentDateTime();
  33. }
  34. tagKeyValue(std::string n,double v)
  35. {
  36. name = n;
  37. value = v;
  38. }
  39. };
  40. private:
  41. DataConsumer* m_pDataConsumer = nullptr;
  42. std::vector<std::string> m_szOutputs; // 数据名称
  43. std::map<std::string,tagRange> m_mpRangeConfig; // 数据范围
  44. private:
  45. std::map<std::string,std::list<tagKeyValue>>
  46. m_mpDataValue; // 测量数据
  47. QReadWriteLock m_objDataLock;
  48. //void Verify();
  49. public:
  50. virtual void Setup(ModuleInfo mi);
  51. virtual void regConsumer(DataConsumer* pDC) ;
  52. virtual bool isInheritedFrom(std::string tp);
  53. virtual void OnSubData(std::string name,std::string val);
  54. };
  55. extern "C" {//一定要添加上
  56. ALARMRECOGNITION_EXPORT BaseModule* instance();
  57. ALARMRECOGNITION_EXPORT void destroy(BaseModule*);
  58. }