Module.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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. // CREATE TABLE IF NOT EXISTS lanpengdb.mokuai2(ts timestamp, dim1 double);
  17. // create topic mokuai2 as select * from lanpengdb.mokuai2;
  18. // delete from lanpengdb.mokuai2;
  19. // insert into lanpengdb.mokuai2 values(NOW,12.345);
  20. class ALARMRECOGNITION_EXPORT Module : public BaseModule
  21. {
  22. public:
  23. Module();
  24. private:
  25. struct tagRange{
  26. QString szName; // data name
  27. double dbMax = __DBL_MAX__;
  28. double dbMin = __DBL_MIN__;
  29. uint uWinSize = 5;
  30. int nStatus = EAS_Normal;
  31. std::string alarmRuleId; // 节点-标识码
  32. int alarmRuleVersion;
  33. int level;
  34. int status;
  35. std::string object;
  36. tagRange()
  37. {
  38. szName.clear();
  39. dbMax = __DBL_MAX__;
  40. dbMin = __DBL_MIN__;
  41. uWinSize = 5;
  42. nStatus = EAS_Normal;
  43. }
  44. };
  45. struct tagKeyValue{
  46. std::string name = "";
  47. double value = 0;
  48. QDateTime tm;
  49. tagKeyValue()
  50. {
  51. tm = QDateTime::currentDateTime();
  52. }
  53. tagKeyValue(std::string n,double v)
  54. {
  55. name = n;
  56. value = v;
  57. tm = QDateTime::currentDateTime();
  58. }
  59. };
  60. private:
  61. DataConsumer* m_pDataConsumer = nullptr;
  62. std::vector<std::string> m_szOutputs; // 输出名称
  63. std::map<std::string,tagRange> m_mpRangeConfig; // 数据范围:data name - confit
  64. private:
  65. std::map<std::string,std::list<tagKeyValue>>
  66. m_mpDataValue; // 测量数据
  67. QReadWriteLock m_objDataLock;
  68. //void Verify();
  69. public:
  70. virtual void Setup(ModuleInfo mi);
  71. virtual void regConsumer(DataConsumer* pDC) ;
  72. virtual bool isInheritedFrom(std::string tp);
  73. virtual void OnSubData(std::string name,std::string val);
  74. };
  75. extern "C" {//一定要添加上
  76. ALARMRECOGNITION_EXPORT BaseModule* instance();
  77. ALARMRECOGNITION_EXPORT void destroy(BaseModule*);
  78. }