#pragma once #include "BaseModule.h" #include "libaray_symbols.h" #include "LockFreeQueue.h" #include #include enum EAlarmStatus { EAS_Normal = 0, EAS_OverThan = 1, EAS_UnderThan = 2, EAS_Both = 3 }; // 全局唯一实例 // 数据越限报警 class ALARMRECOGNITION_EXPORT Module : public BaseModule { public: Module(); private: struct tagRange{ double dbMax = __DBL_MAX__; double dbMin = __DBL_MIN__; uint uWinSize = 5; int nStatus = EAS_Normal; }; struct tagKeyValue{ std::string name = ""; double value = 0; QDateTime tm; tagKeyValue() { tm = QDateTime::currentDateTime(); } tagKeyValue(std::string n,double v) { name = n; value = v; tm = QDateTime::currentDateTime(); } }; private: DataConsumer* m_pDataConsumer = nullptr; std::vector m_szOutputs; // 数据名称 std::map m_mpRangeConfig; // 数据范围 private: std::map> m_mpDataValue; // 测量数据 QReadWriteLock m_objDataLock; //void Verify(); public: virtual void Setup(ModuleInfo mi); virtual void regConsumer(DataConsumer* pDC) ; virtual bool isInheritedFrom(std::string tp); virtual void OnSubData(std::string name,std::string val); }; extern "C" {//一定要添加上 ALARMRECOGNITION_EXPORT BaseModule* instance(); ALARMRECOGNITION_EXPORT void destroy(BaseModule*); }