Versão limpa em 04/09/2014. Telnet funcionando.

Dependencies:   EthernetInterface mbed-rtos mbed NTPClient

Revision:
31:647771325538
Parent:
30:9bf44d2785d5
Child:
32:8b108d8089e8
diff -r 9bf44d2785d5 -r 647771325538 Codes/EventDetector.cpp
--- 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);