Module.h 1.7 KB

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