Module.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. //#include <QtCore/QThread>
  8. enum EAlarmStatus
  9. {
  10. EAS_Normal = 0,
  11. EAS_Breaked = 1,
  12. EAS_Recover = 2
  13. };
  14. // 全局唯一实例
  15. // 数据通断告警
  16. // CREATE TABLE IF NOT EXISTS lanpengdb.mokuai3(ts timestamp, dim1 double);
  17. // create topic mokuai3 as select * from lanpengdb.mokuai3;
  18. // delete from lanpengdb.mokuai3;
  19. // insert into lanpengdb.mokuai3 values(NOW,12.345);
  20. class COMMRECOGNITION_EXPORT Module : public QObject,public RunnableModule
  21. {
  22. Q_OBJECT
  23. public:
  24. Module();
  25. private:
  26. struct tagParam{
  27. uint uWinSize = 3;
  28. uint uIntervalMS = 10000;
  29. int nStatus = EAS_Breaked;
  30. bool bChanged = false;
  31. };
  32. private:
  33. DataConsumer* m_pDataConsumer = nullptr;
  34. std::vector<std::string> m_szOutputs; // 数据名称
  35. std::map<std::string,tagParam> m_mpParamConfig; // 数据参数
  36. uint m_nLoopIntervalMS; // 检测周期
  37. private:
  38. std::map<std::string,QDateTime> m_mpDataValue; // 测量数据
  39. QReadWriteLock m_objDataLock;
  40. signals:
  41. void sigMqttMsg(std::string,QString);
  42. public slots:
  43. void sltMqttMsg(std::string,QString);
  44. private:
  45. void pubStatus(std::string,int);
  46. void Check();
  47. virtual void Run();
  48. public:
  49. virtual void Setup(ModuleInfo mi);
  50. virtual void regConsumer(DataConsumer* pDC) ;
  51. virtual bool isInheritedFrom(std::string tp);
  52. virtual void OnSubData(std::string name,std::string val);
  53. };
  54. extern "C" {//一定要添加上
  55. COMMRECOGNITION_EXPORT BaseModule* instance();
  56. COMMRECOGNITION_EXPORT void destroy(BaseModule*);
  57. }