![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Versão limpa em 04/09/2014. Telnet funcionando.
Dependencies: EthernetInterface mbed-rtos mbed NTPClient
Diff: Codes/EventDetector.cpp
- Revision:
- 31:647771325538
- Parent:
- 30:9bf44d2785d5
- Child:
- 32:8b108d8089e8
--- a/Codes/EventDetector.cpp Tue Apr 28 14:38:37 2015 +0000 +++ b/Codes/EventDetector.cpp Fri May 01 14:46:08 2015 +0000 @@ -11,8 +11,7 @@ #define MARCA 10 #define GERAFUGA 0 #define UMCICLO 16.666666667 - #define ZEROMV 1 - + CaptureMailbox EventDetector::m_EventMailbox; EventDetector EventDetector::m_Detector[NUMBER_OF_CHANNELS] = {0,1,2,3,4,5}; @@ -48,7 +47,8 @@ //void EventDetector::ProcessEvent(float rmsvalue, int t) void EventDetector::ProcessEvent(float rmsvalue, float mv2, int under, int over) { - int tempofuga = 0; + int i, tempofuga = 0; + float buf[NUMBER_OF_SAMPLES*2]; //Thread::wait(500);//TimeDelay(t)); //printf("%d time delay\n", TimeDelay(t)); @@ -63,7 +63,7 @@ Capture::Stop(); //printf("Passou Stop\n"); //CommTCP::RequestAcom(); - OnTrigger(rmsvalue, mv2, under, over, 0); //TODO: must change the parameter of this function call + OnTrigger(NULL,rmsvalue, mv2, under, over, 0); //TODO: must change the parameter of this function call //printf("Passou OnTriger\n"); Capture::Start(); //printf("Passou Start\n"); @@ -78,7 +78,7 @@ m_OutletTriggered = false; Capture::Stop(); //printf("Passou Stop\n"); - OnTrigger(rmsvalue, mv2, under, over, 0);//TODO: must change the parameter of this function call + OnTrigger(NULL, rmsvalue, mv2, under, over, 0);//TODO: must change the parameter of this function call //printf("Passou onTrigger\n"); Capture::Start(); //printf("Passou Start\n"); @@ -99,44 +99,46 @@ */ if(rmsvalue > Settings::get_Limit(m_Channel)) { - if ( ZEROMV ) // verifica se é para retirar o VM - { - short int buf[NUMBER_OF_SAMPLES]; - int i; - float newvm = 0; - Capture::CopyBufferSigned(m_Channel,buf); + /* Retira o VM das amostras */ + //pega os dados da captura atual + mv2 = 0; + Capture::CopyBufferFloat(m_Channel,buf); + + /* Retira o valorMedio de todas as amostras */ + for(i=0; i < NUMBER_OF_SAMPLES; i++){ + buf[i] -= mv2; + mv2 += buf[i]; + } + if ( m_EventCounter == Settings::get_EventLimit() ){ + mv2 = mv2 / NUMBER_OF_SAMPLES; + printf("Novo valor medio %f RMS original %f\n", mv2, rmsvalue); + } - /* Retira o valorMedio de todas as amostras */ - for(i=0; i < NUMBER_OF_SAMPLES; i++){ - buf[i] -= (int) mv2; - newvm += buf[i]; - } - if ( m_EventCounter == Settings::get_EventLimit() ){ - newvm = newvm / NUMBER_OF_SAMPLES; - printf("Novo valor medio %.0f\n", newvm); - } - - rmsvalue = SignalProcessor::CalculateRMSSigned(buf, m_Channel); - } + rmsvalue = SignalProcessor::CalculateRMSSigned(buf, m_Channel); + if ( m_EventCounter == Settings::get_EventLimit() ) + printf("novo RMS %f\n", rmsvalue); + if(!m_OutletTriggered) { - if(m_EventCounter < Settings::get_EventLimit()) - { - m_EventCounter++; - } - else - { - //printf("Deu evento de liga ou Fuga\n"); - if (m_Channel % 2 == 1) // Canais impares sao de diferencial - m_tempo.start(); - m_OutletTriggered = true; - Capture::Stop(); - OnTrigger(rmsvalue, mv2, under, over, 0); //TODO: must change the parameter of this function call - //CommTCP::RequestAcom(); - //zzz - Capture::Start(); - m_EventCounter = 0; + if (rmsvalue > Settings::get_Limit(m_Channel)) { + if(m_EventCounter < Settings::get_EventLimit() ) + { + m_EventCounter++; + } + else + { + //printf("Deu evento de liga ou Fuga\n"); + if (m_Channel % 2 == 1) // Canais impares sao de diferencial + m_tempo.start(); + m_OutletTriggered = true; + Capture::Stop(); + OnTrigger(buf, rmsvalue, mv2, under, over, 0); //TODO: must change the parameter of this function call + //CommTCP::RequestAcom(); + //zzz + Capture::Start(); + m_EventCounter = 0; + } } } else @@ -163,7 +165,7 @@ tempofuga = 0; m_OutletTriggered = false; Capture::Stop(); - OnTrigger(rmsvalue, mv2, under, over, tempofuga);//TODO: must change the parameter of this function call + OnTrigger(buf, rmsvalue, mv2, under, over, tempofuga);//TODO: must change the parameter of this function call //printf("===> contliga %d contdesliga %d\n", contliga, contdesl); //zzz Capture::Start(); @@ -199,9 +201,9 @@ } //void EventDetector::OnTrigger(float rmsvalue) -void EventDetector::OnTrigger(float rmsvalue, float mv2, int under, int over, int duration) +void EventDetector::OnTrigger(float *buf, float rmsvalue, float mv2, int under, int over, int duration) { - SendMessage(0,rmsvalue, mv2, under, over, duration); + SendMessage(0, buf, rmsvalue, mv2, under, over, duration); //printf("Ontrigger::Enviou mensagem\n"); /* if(m_OutletTriggered) @@ -222,11 +224,11 @@ void EventDetector::ExternalTrigger() { // Ajustar valores de mv2, under, over e duration na chamada!!! - SendMessage(1, 0, 0, 0, 0, 0); + SendMessage(1, NULL, 0, 0, 0, 0, 0); } //void EventDetector::SendMessage(int ext,float rmsvalue) -void EventDetector::SendMessage(int ext, float rmsvalue, float mv2, int under, int over, int duration) +void EventDetector::SendMessage(int ext, float *buf, float rmsvalue, float mv2, int under, int over, int duration) { int flagrfid = 0; //printf("Chegou SendMessage\n"); @@ -235,9 +237,10 @@ //printf("Capturou evento\n"); //then initialize the object properly + /* O buffer foi coletado no ProcessEvent para retirada do VM unsigned short int buf[NUMBER_OF_SAMPLES]; Capture::CopyBuffer(m_Channel,buf); - + */ if(ext) { rmsvalue = 0;//SignalProcessor::CalculateRMS(buf,m_Channel);