Versão do protegemed que calcula o tempo em ms da fuga, calcula o numero de onverflow (valores muito baixo) e underflow (valores muito altos). Além disso, calcula um valor médio a partir dos valores capturados e não apenas pela fft.
Dependencies: EthernetInterface mbed-rtos mbed
Headers/EventDetector.h
- Committer:
- rebonatto
- Date:
- 2014-07-21
- Revision:
- 2:86c3cb25577b
- Parent:
- 0:c64e1194230b
File content as of revision 2:86c3cb25577b:
/* * EventDetector.h * * Created on: * Author: */ #ifndef EVENTDETECTOR_H #define EVENTDETECTOR_H #include <stdlib.h> #include "rtos.h" #include "Settings.h" #include "Capture.h" #include "SignalProcessor.h" class CaptureEvent { char m_RFID[9]; int m_Type; int m_OutletNumber; float m_MeanValue; float m_MV2; float m_RMSValue; int m_Under; int m_Over; float m_Gain; int m_Offset; int m_Duration; float m_Sin[NUMBER_OF_HARMONICS]; float m_Cos[NUMBER_OF_HARMONICS]; public: CaptureEvent(); //void Setup(char* rfid,int type,int outlet,float mv,float rms,float gain, int offset,float* sin, float* cos); void Setup(char* rfid, int type, int outlet, float mv, float mv2, float rms, int under, int over, float gain, int offset, int duration, float* sin, float* cos); char* get_RFID() { return m_RFID; } int get_Type() { return m_Type; } int get_OutletNumber() { return m_OutletNumber; } float get_MeanValue() { return m_MeanValue; } float get_MV2() { return m_MV2; } float get_RMSValue() { return m_RMSValue; } int get_Under() { return m_Under; } int get_Over() { return m_Over; } float get_Gain() { return m_Gain; } int get_Offset() { return m_Offset; } int get_Duration() { return m_Duration; } float get_SineValue(int idx) { return m_Sin[idx]; } float get_CossineValue(int idx) { return m_Cos[idx]; } }; typedef Mail<CaptureEvent,LENGTH_MAIL_BOX> CaptureMailbox; class EventDetector { protected: static CaptureMailbox m_EventMailbox; static const int m_EventLimit; static EventDetector m_Detector[NUMBER_OF_CHANNELS]; bool m_OutletTriggered; int m_EventCounter; int m_Channel; Timer m_tempo; //void OnTrigger(float rmsvalue); void OnTrigger(float rmsvalue, float mv2, int under, int over, int duration); //void SendMessage(int ext,float rmsvalue); void SendMessage(int ext,float rmsvalue, float mv2, int under, int over, int duration); int TimeDelay(int t); public: EventDetector(int ch); void ExternalTrigger(); //void ProcessEvent(float rmsvalue, int t); void ProcessEvent(float rmsvalue, float mv2, int under, int over); void ShowValues(CaptureEvent* e); static CaptureMailbox& GetMailbox() { return m_EventMailbox; } static EventDetector& get_Detector(int ch) { return m_Detector[ch]; } }; #endif