First Version
Dependencies: EthernetInterface mbed-rtos mbed
main.cpp@0:9df41090ba33, 2015-07-21 (annotated)
- Committer:
- rebonatto
- Date:
- Tue Jul 21 21:29:49 2015 +0000
- Revision:
- 0:9df41090ba33
- Child:
- 1:ce016c668e34
First Version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rebonatto | 0:9df41090ba33 | 1 | /* |
rebonatto | 0:9df41090ba33 | 2 | Novo projeto PMED_Calibra |
rebonatto | 0:9df41090ba33 | 3 | Criado para: |
rebonatto | 0:9df41090ba33 | 4 | - Auxiliar no processo de calibração dos valores de offset e ganho das tomadas |
rebonatto | 0:9df41090ba33 | 5 | - Faciliar os testes da leitura de RFID nas tomadas |
rebonatto | 0:9df41090ba33 | 6 | |
rebonatto | 0:9df41090ba33 | 7 | */ |
rebonatto | 0:9df41090ba33 | 8 | #include <stdio.h> |
rebonatto | 0:9df41090ba33 | 9 | |
rebonatto | 0:9df41090ba33 | 10 | #include "mbed.h" |
rebonatto | 0:9df41090ba33 | 11 | #include "rtos.h" |
rebonatto | 0:9df41090ba33 | 12 | #include "cmsis_os.h" |
rebonatto | 0:9df41090ba33 | 13 | #include "EthernetInterface.h" |
rebonatto | 0:9df41090ba33 | 14 | #include "Settings.h" |
rebonatto | 0:9df41090ba33 | 15 | #include "Capture.h" |
rebonatto | 0:9df41090ba33 | 16 | #include "Http_post.h" |
rebonatto | 0:9df41090ba33 | 17 | #include "CommTCP.h" |
rebonatto | 0:9df41090ba33 | 18 | #include "SignalProcessor.h" |
rebonatto | 0:9df41090ba33 | 19 | #include "EventDetector.h" |
rebonatto | 0:9df41090ba33 | 20 | |
rebonatto | 0:9df41090ba33 | 21 | extern "C" void mbed_reset(); |
rebonatto | 0:9df41090ba33 | 22 | |
rebonatto | 0:9df41090ba33 | 23 | EthernetInterface eth; |
rebonatto | 0:9df41090ba33 | 24 | |
rebonatto | 0:9df41090ba33 | 25 | void InitializeEthernetLink(); |
rebonatto | 0:9df41090ba33 | 26 | int SelectOption(); |
rebonatto | 0:9df41090ba33 | 27 | void ShowRMSValues(); |
rebonatto | 0:9df41090ba33 | 28 | void ShowMeanValues(); |
rebonatto | 0:9df41090ba33 | 29 | void ShowSamplesFromChannel(); |
rebonatto | 0:9df41090ba33 | 30 | int SelectChannel(); |
rebonatto | 0:9df41090ba33 | 31 | void SetOffset(); |
rebonatto | 0:9df41090ba33 | 32 | void SetGain(); |
rebonatto | 0:9df41090ba33 | 33 | void TestRFID(); |
rebonatto | 0:9df41090ba33 | 34 | |
rebonatto | 0:9df41090ba33 | 35 | void thread1(void const *args) |
rebonatto | 0:9df41090ba33 | 36 | { |
rebonatto | 0:9df41090ba33 | 37 | DigitalOut led1(LED1); |
rebonatto | 0:9df41090ba33 | 38 | int op = 0; |
rebonatto | 0:9df41090ba33 | 39 | |
rebonatto | 0:9df41090ba33 | 40 | Capture::Initialize(); |
rebonatto | 0:9df41090ba33 | 41 | |
rebonatto | 0:9df41090ba33 | 42 | while(1) |
rebonatto | 0:9df41090ba33 | 43 | { |
rebonatto | 0:9df41090ba33 | 44 | op = SelectOption(); |
rebonatto | 0:9df41090ba33 | 45 | |
rebonatto | 0:9df41090ba33 | 46 | switch (op) { |
rebonatto | 0:9df41090ba33 | 47 | case (1): ShowRMSValues(); break; |
rebonatto | 0:9df41090ba33 | 48 | case (2): ShowMeanValues(); break; |
rebonatto | 0:9df41090ba33 | 49 | case (3): ShowSamplesFromChannel(); break; |
rebonatto | 0:9df41090ba33 | 50 | case (4): SetOffset(); break; |
rebonatto | 0:9df41090ba33 | 51 | case (5): SetGain(); break; |
rebonatto | 0:9df41090ba33 | 52 | case (6): TestRFID(); break; |
rebonatto | 0:9df41090ba33 | 53 | case (8): mbed_reset(); break; |
rebonatto | 0:9df41090ba33 | 54 | } |
rebonatto | 0:9df41090ba33 | 55 | } |
rebonatto | 0:9df41090ba33 | 56 | } |
rebonatto | 0:9df41090ba33 | 57 | |
rebonatto | 0:9df41090ba33 | 58 | int main() { |
rebonatto | 0:9df41090ba33 | 59 | FILE *f; |
rebonatto | 0:9df41090ba33 | 60 | //Set Highest Priority |
rebonatto | 0:9df41090ba33 | 61 | //osThreadSetPriority(osThreadGetId(),osPriorityHigh); |
rebonatto | 0:9df41090ba33 | 62 | |
rebonatto | 0:9df41090ba33 | 63 | Settings::ReadFile(); |
rebonatto | 0:9df41090ba33 | 64 | //printf("Passou Settings, carregou arquivo\n"); |
rebonatto | 0:9df41090ba33 | 65 | //Settings::ShowValues(); |
rebonatto | 0:9df41090ba33 | 66 | |
rebonatto | 0:9df41090ba33 | 67 | InitializeEthernetLink(); |
rebonatto | 0:9df41090ba33 | 68 | //printf("Inicializou link Ethernet\n"); |
rebonatto | 0:9df41090ba33 | 69 | printf("\nIP Address is NEW %s\n", eth.getIPAddress()); |
rebonatto | 0:9df41090ba33 | 70 | |
rebonatto | 0:9df41090ba33 | 71 | //Start HTTP POST service |
rebonatto | 0:9df41090ba33 | 72 | //Thread http_post(HttpPost::HttpPost_Thread); |
rebonatto | 0:9df41090ba33 | 73 | |
rebonatto | 0:9df41090ba33 | 74 | //Start TCP daemon service |
rebonatto | 0:9df41090ba33 | 75 | //Thread TcpService(CommTCP::CommTCP_Thread); |
rebonatto | 0:9df41090ba33 | 76 | |
rebonatto | 0:9df41090ba33 | 77 | |
rebonatto | 0:9df41090ba33 | 78 | //Start Telnet Service |
rebonatto | 0:9df41090ba33 | 79 | //Thread telnetserver(TelnetServer::TelnetServer_Thread); |
rebonatto | 0:9df41090ba33 | 80 | //Start TFTP Service |
rebonatto | 0:9df41090ba33 | 81 | |
rebonatto | 0:9df41090ba33 | 82 | /* |
rebonatto | 0:9df41090ba33 | 83 | unsigned short vet[256] = {2105,2105,2113,2127,2127,2125,2112,2113,2130,2130,2123,2112,2112,2128,2128,2123,2112,2113,2136,2136,2374,2551,2671,2869,2887,3036,2964,2964,2964,3145,3145,3206,3209,3298,3298,3264,3261,3208,3239,3239,3197,3197,3113,3032,3065,3065,3000,2901,2943,2943,2900,2852,2844,2863,2863,2838,2764,2791,2724,2724,2668,2710,2636,2658,2658,2606,2527,2443,2434,2434,2258,2066,2061,2080,2080,2063,2055,2055,2070,2070,2064,2051,2054,2069,2069,2062,2054,2058,2066,2309,2062,2052,2054,2067,2067,2063,2051,2049,2068,2068,2060,2053,2050,2067,2066,2069,2051,2053,2070,2070,2064,2050,2053,2070,2070,2062,2052,2055,2068,2068,2065,2052,2057,2072,2072,2064,2054,2054,2072,2072,2064,2053,2052,2069,2069,2064,2052,2053,2064,2064,2062,2049,2051,2067,2067,2059,2051,2050,2068,2068,2058,2046,2050,2068,2068,2061,2052,2058,2068,2068,2059,2052,2053,2067,2067,1744,1526,1471,1289,1289,1137,1142,1055,1120,1120,997,967,894,941,941,928,887,1001,949,949,1028,1105,1079,1191,1191,1223,1211,1223,1267,1267,1325,1267,1356,1327,1327,1369,1439,1381,1498,1498,1503,1503,1527,1545,1545,1635,1650,1778,1792,1792,1971,2108,2109,2126,2126,2124,2117,2118,2131,2131,2126,2118,2118,2138,2138,2134,2124,2114,2135,2135,2129,2121,2120,2136,2136,2128,2122,2122,2143,2120,2130,2120,2121,2139,2139,2130,2119,2121,2136,2136,2129}; |
rebonatto | 0:9df41090ba33 | 84 | float sen[12],cos[12],vm; |
rebonatto | 0:9df41090ba33 | 85 | SignalProcessor::CalculateFFT(vet,sen,cos,&vm,1); |
rebonatto | 0:9df41090ba33 | 86 | |
rebonatto | 0:9df41090ba33 | 87 | printf("VM = %f\n",vm); |
rebonatto | 0:9df41090ba33 | 88 | for(int i=0;i<12;i++) |
rebonatto | 0:9df41090ba33 | 89 | { |
rebonatto | 0:9df41090ba33 | 90 | printf("SEN%d = %f, COS%d = %f\n",i,sen[i],i,cos[i]); |
rebonatto | 0:9df41090ba33 | 91 | } |
rebonatto | 0:9df41090ba33 | 92 | */ |
rebonatto | 0:9df41090ba33 | 93 | //Jump to the capture routine(will run on this thread) |
rebonatto | 0:9df41090ba33 | 94 | thread1(NULL); |
rebonatto | 0:9df41090ba33 | 95 | |
rebonatto | 0:9df41090ba33 | 96 | while(1){//never reaches here |
rebonatto | 0:9df41090ba33 | 97 | printf("Reset\n"); |
rebonatto | 0:9df41090ba33 | 98 | f = fopen(FILENAMERESET, "a"); |
rebonatto | 0:9df41090ba33 | 99 | if (f == NULL) |
rebonatto | 0:9df41090ba33 | 100 | f = fopen(FILENAMERESET, "w"); |
rebonatto | 0:9df41090ba33 | 101 | fprintf(f, "Laco Errado\n"); |
rebonatto | 0:9df41090ba33 | 102 | fclose(f); |
rebonatto | 0:9df41090ba33 | 103 | Thread::yield(); |
rebonatto | 0:9df41090ba33 | 104 | } |
rebonatto | 0:9df41090ba33 | 105 | } |
rebonatto | 0:9df41090ba33 | 106 | |
rebonatto | 0:9df41090ba33 | 107 | void TestRFID(){ |
rebonatto | 0:9df41090ba33 | 108 | char rfid_number[9]; |
rebonatto | 0:9df41090ba33 | 109 | int num_tom = 0; |
rebonatto | 0:9df41090ba33 | 110 | while (1){ |
rebonatto | 0:9df41090ba33 | 111 | printf("\nType the outlet number (1 to 3): "); |
rebonatto | 0:9df41090ba33 | 112 | scanf("%d", &num_tom); |
rebonatto | 0:9df41090ba33 | 113 | if ((num_tom > 3) || (num_tom < 1) ) |
rebonatto | 0:9df41090ba33 | 114 | printf("Invalid Outlet - Retype (1 to 3) !!! "); |
rebonatto | 0:9df41090ba33 | 115 | else |
rebonatto | 0:9df41090ba33 | 116 | break; |
rebonatto | 0:9df41090ba33 | 117 | } |
rebonatto | 0:9df41090ba33 | 118 | |
rebonatto | 0:9df41090ba33 | 119 | Capture::ReadRFID((int)(num_tom - '0'),rfid_number); |
rebonatto | 0:9df41090ba33 | 120 | printf("\n\nRFID SERIAL NUMBER: "); |
rebonatto | 0:9df41090ba33 | 121 | printf("{%8s}\n\n", rfid_number); |
rebonatto | 0:9df41090ba33 | 122 | } |
rebonatto | 0:9df41090ba33 | 123 | |
rebonatto | 0:9df41090ba33 | 124 | void SetGain(){ |
rebonatto | 0:9df41090ba33 | 125 | float rms[NUMBER_OF_CHANNELS], mv2[NUMBER_OF_CHANNELS]; |
rebonatto | 0:9df41090ba33 | 126 | int under[NUMBER_OF_CHANNELS], over[NUMBER_OF_CHANNELS]; |
rebonatto | 0:9df41090ba33 | 127 | float corrente = 0; |
rebonatto | 0:9df41090ba33 | 128 | int num_canal = 0; |
rebonatto | 0:9df41090ba33 | 129 | float soma_rms = 0; |
rebonatto | 0:9df41090ba33 | 130 | unsigned int cont = 0; |
rebonatto | 0:9df41090ba33 | 131 | float ganho = 0; |
rebonatto | 0:9df41090ba33 | 132 | |
rebonatto | 0:9df41090ba33 | 133 | printf("\n\nGain Adjustment:\n"); |
rebonatto | 0:9df41090ba33 | 134 | printf("\nFor Adjust the gain, ALL gains in config file (PMED.TXT) MUST be 1 (one)"); |
rebonatto | 0:9df41090ba33 | 135 | num_canal = SelectChannel(); |
rebonatto | 0:9df41090ba33 | 136 | if (Settings::get_Gain(num_canal) != 1){ |
rebonatto | 0:9df41090ba33 | 137 | printf("\n\nIt is impossibile to continue.\n"); |
rebonatto | 0:9df41090ba33 | 138 | printf("\nThe gain in channel %d is %f and MUST be be equal to 1 (one).", num_canal, Settings::get_Gain(num_canal)); |
rebonatto | 0:9df41090ba33 | 139 | printf("\nPut in the config file (PMED.TXT)\n\ngain%d=1\n", num_canal); |
rebonatto | 0:9df41090ba33 | 140 | printf("\nAfter save the config file, you MUST restart the mbed."); |
rebonatto | 0:9df41090ba33 | 141 | return; |
rebonatto | 0:9df41090ba33 | 142 | } |
rebonatto | 0:9df41090ba33 | 143 | |
rebonatto | 0:9df41090ba33 | 144 | printf("\nConnect the plug with the current used to adjustment (%s)", num_canal%2==0?"Phase":"Leakage"); |
rebonatto | 0:9df41090ba33 | 145 | printf("\nSwitch on the charge and with an ammeter verify the current (RMS) consumed."); |
rebonatto | 0:9df41090ba33 | 146 | printf("\nType the current in ammeter (%s): ", num_canal%2==0?"A":"mA"); |
rebonatto | 0:9df41090ba33 | 147 | scanf("%f", &corrente); |
rebonatto | 0:9df41090ba33 | 148 | |
rebonatto | 0:9df41090ba33 | 149 | printf("\nWait aproximatelly 0.5s\n"); |
rebonatto | 0:9df41090ba33 | 150 | |
rebonatto | 0:9df41090ba33 | 151 | while(cont<30) |
rebonatto | 0:9df41090ba33 | 152 | { |
rebonatto | 0:9df41090ba33 | 153 | SignalProcessor::CalculateRMSBulk(rms, mv2, under, over); |
rebonatto | 0:9df41090ba33 | 154 | soma_rms += rms[num_canal]; |
rebonatto | 0:9df41090ba33 | 155 | cont++; |
rebonatto | 0:9df41090ba33 | 156 | } |
rebonatto | 0:9df41090ba33 | 157 | soma_rms /= 30; |
rebonatto | 0:9df41090ba33 | 158 | ganho = soma_rms/corrente; |
rebonatto | 0:9df41090ba33 | 159 | printf("\nPut in the configuration file (PMED.TXT)\ngain%d=%.4f\n\n",num_canal,ganho); |
rebonatto | 0:9df41090ba33 | 160 | printf("\nRepeat this procedure for the others channels and at the end, reset the Mbed.\n"); |
rebonatto | 0:9df41090ba33 | 161 | } |
rebonatto | 0:9df41090ba33 | 162 | |
rebonatto | 0:9df41090ba33 | 163 | void SetOffset(){ |
rebonatto | 0:9df41090ba33 | 164 | unsigned char tecla=0; |
rebonatto | 0:9df41090ba33 | 165 | unsigned int soma[6]={0,0,0,0,0,0}; |
rebonatto | 0:9df41090ba33 | 166 | int cont = 0; |
rebonatto | 0:9df41090ba33 | 167 | float rms[NUMBER_OF_CHANNELS], mv2[NUMBER_OF_CHANNELS]; |
rebonatto | 0:9df41090ba33 | 168 | int under[NUMBER_OF_CHANNELS], over[NUMBER_OF_CHANNELS]; |
rebonatto | 0:9df41090ba33 | 169 | |
rebonatto | 0:9df41090ba33 | 170 | printf("\n\nAdjustment of Offset\n"); |
rebonatto | 0:9df41090ba33 | 171 | printf("\nSwitch off all plugs from outlets."); |
rebonatto | 0:9df41090ba33 | 172 | printf("\nKeep the Protegemed on.\n"); |
rebonatto | 0:9df41090ba33 | 173 | printf("\nType any key and press <ENTER> when ready!\n"); |
rebonatto | 0:9df41090ba33 | 174 | scanf("%c", &tecla); |
rebonatto | 0:9df41090ba33 | 175 | |
rebonatto | 0:9df41090ba33 | 176 | printf("Wait aproximatelly 0.5s\n"); |
rebonatto | 0:9df41090ba33 | 177 | |
rebonatto | 0:9df41090ba33 | 178 | while(cont<30) |
rebonatto | 0:9df41090ba33 | 179 | { |
rebonatto | 0:9df41090ba33 | 180 | SignalProcessor::CalculateRMSBulk(rms, mv2, under, over); |
rebonatto | 0:9df41090ba33 | 181 | for (int i=0; i<6;i++) |
rebonatto | 0:9df41090ba33 | 182 | { |
rebonatto | 0:9df41090ba33 | 183 | soma[i] += mv2[i]; |
rebonatto | 0:9df41090ba33 | 184 | } |
rebonatto | 0:9df41090ba33 | 185 | cont++; |
rebonatto | 0:9df41090ba33 | 186 | } |
rebonatto | 0:9df41090ba33 | 187 | for (int i=0; i<6 ; i++) |
rebonatto | 0:9df41090ba33 | 188 | { |
rebonatto | 0:9df41090ba33 | 189 | soma[i] = soma[i]/30; |
rebonatto | 0:9df41090ba33 | 190 | } |
rebonatto | 0:9df41090ba33 | 191 | printf("\n\nPut in file PMED.TXT an save it:\n"); |
rebonatto | 0:9df41090ba33 | 192 | for (int i=0; i<6 ; i++) |
rebonatto | 0:9df41090ba33 | 193 | { |
rebonatto | 0:9df41090ba33 | 194 | printf("offset%d=%u\n", i, soma[i]); |
rebonatto | 0:9df41090ba33 | 195 | } |
rebonatto | 0:9df41090ba33 | 196 | |
rebonatto | 0:9df41090ba33 | 197 | printf("\n\nReset the Mbed.\n"); |
rebonatto | 0:9df41090ba33 | 198 | printf("\n\nYou MUST in the sequence adjust the gain!!!\n\n"); |
rebonatto | 0:9df41090ba33 | 199 | } |
rebonatto | 0:9df41090ba33 | 200 | |
rebonatto | 0:9df41090ba33 | 201 | int SelectChannel(){ |
rebonatto | 0:9df41090ba33 | 202 | int num_channel = 0; |
rebonatto | 0:9df41090ba33 | 203 | while(1){ |
rebonatto | 0:9df41090ba33 | 204 | printf("\n\nOdd channels are leakage and even channels are phase!!"); |
rebonatto | 0:9df41090ba33 | 205 | printf("\nSelect a channel to visualize samples(0 to 5): "); |
rebonatto | 0:9df41090ba33 | 206 | scanf("%d", &num_channel); |
rebonatto | 0:9df41090ba33 | 207 | if ( (num_channel > 5) || (num_channel < 0) ) |
rebonatto | 0:9df41090ba33 | 208 | printf("\n\n\nInvalid Channel! - Retype a valid channel\n\n\n "); |
rebonatto | 0:9df41090ba33 | 209 | else |
rebonatto | 0:9df41090ba33 | 210 | break; |
rebonatto | 0:9df41090ba33 | 211 | } |
rebonatto | 0:9df41090ba33 | 212 | return num_channel; |
rebonatto | 0:9df41090ba33 | 213 | } |
rebonatto | 0:9df41090ba33 | 214 | |
rebonatto | 0:9df41090ba33 | 215 | |
rebonatto | 0:9df41090ba33 | 216 | void ShowSamplesFromChannel(){ |
rebonatto | 0:9df41090ba33 | 217 | unsigned short samples[NUMBER_OF_SAMPLES]; |
rebonatto | 0:9df41090ba33 | 218 | int cont = 0; |
rebonatto | 0:9df41090ba33 | 219 | int num_channel = SelectChannel(); |
rebonatto | 0:9df41090ba33 | 220 | |
rebonatto | 0:9df41090ba33 | 221 | |
rebonatto | 0:9df41090ba33 | 222 | printf("\nValues of %d samples from channel %d.\n\n", NUMBER_OF_SAMPLES, num_channel ); |
rebonatto | 0:9df41090ba33 | 223 | |
rebonatto | 0:9df41090ba33 | 224 | while(cont < 5) |
rebonatto | 0:9df41090ba33 | 225 | { |
rebonatto | 0:9df41090ba33 | 226 | Capture::CopyBuffer(num_channel, samples); |
rebonatto | 0:9df41090ba33 | 227 | printf("\n******* %da. sequence of samples (%s)\n\n", cont+1, num_channel%2==0?"Phase":"Leakage"); |
rebonatto | 0:9df41090ba33 | 228 | for (int k=0; k< NUMBER_OF_SAMPLES; k++) |
rebonatto | 0:9df41090ba33 | 229 | { |
rebonatto | 0:9df41090ba33 | 230 | printf("%d ", samples[k]); |
rebonatto | 0:9df41090ba33 | 231 | } |
rebonatto | 0:9df41090ba33 | 232 | printf("\n"); |
rebonatto | 0:9df41090ba33 | 233 | cont++; |
rebonatto | 0:9df41090ba33 | 234 | } |
rebonatto | 0:9df41090ba33 | 235 | } |
rebonatto | 0:9df41090ba33 | 236 | |
rebonatto | 0:9df41090ba33 | 237 | int SelectOption() |
rebonatto | 0:9df41090ba33 | 238 | { |
rebonatto | 0:9df41090ba33 | 239 | int option; |
rebonatto | 0:9df41090ba33 | 240 | |
rebonatto | 0:9df41090ba33 | 241 | while (true) |
rebonatto | 0:9df41090ba33 | 242 | { |
rebonatto | 0:9df41090ba33 | 243 | printf("\n\n"); |
rebonatto | 0:9df41090ba33 | 244 | printf("+-------------------------------------+\n"); |
rebonatto | 0:9df41090ba33 | 245 | printf("| PMED_Calibra: MENU |\n"); |
rebonatto | 0:9df41090ba33 | 246 | printf("| 1. RMS Values. |\n"); |
rebonatto | 0:9df41090ba33 | 247 | printf("| 2. Mean Values. |\n"); |
rebonatto | 0:9df41090ba33 | 248 | printf("| 3. Read samples from 1 channel. |\n"); |
rebonatto | 0:9df41090ba33 | 249 | printf("| 4. Offset adjust. |\n"); |
rebonatto | 0:9df41090ba33 | 250 | printf("| 5. Gain adjust. |\n"); |
rebonatto | 0:9df41090ba33 | 251 | printf("| 6. Read RFID tag. |\n"); |
rebonatto | 0:9df41090ba33 | 252 | printf("| 7. Test RFID Read (many times). |\n"); |
rebonatto | 0:9df41090ba33 | 253 | printf("| 8. Reset the Mbed |\n"); |
rebonatto | 0:9df41090ba33 | 254 | printf("+-------------------------------------+\n"); |
rebonatto | 0:9df41090ba33 | 255 | printf("Select an Option: "); |
rebonatto | 0:9df41090ba33 | 256 | |
rebonatto | 0:9df41090ba33 | 257 | scanf("%d", &option); |
rebonatto | 0:9df41090ba33 | 258 | if ( (option > 8) || (option < 1) ){ |
rebonatto | 0:9df41090ba33 | 259 | printf("\n\n\nInvalid Option! - Retype a valid option\n\n\n "); |
rebonatto | 0:9df41090ba33 | 260 | } |
rebonatto | 0:9df41090ba33 | 261 | else |
rebonatto | 0:9df41090ba33 | 262 | break; |
rebonatto | 0:9df41090ba33 | 263 | } |
rebonatto | 0:9df41090ba33 | 264 | |
rebonatto | 0:9df41090ba33 | 265 | return option; |
rebonatto | 0:9df41090ba33 | 266 | } |
rebonatto | 0:9df41090ba33 | 267 | |
rebonatto | 0:9df41090ba33 | 268 | |
rebonatto | 0:9df41090ba33 | 269 | void ShowMeanValues(){ |
rebonatto | 0:9df41090ba33 | 270 | float rms[NUMBER_OF_CHANNELS], avg[NUMBER_OF_CHANNELS], mv2[NUMBER_OF_CHANNELS]; |
rebonatto | 0:9df41090ba33 | 271 | int under[NUMBER_OF_CHANNELS], over[NUMBER_OF_CHANNELS]; |
rebonatto | 0:9df41090ba33 | 272 | |
rebonatto | 0:9df41090ba33 | 273 | int cont = 0; |
rebonatto | 0:9df41090ba33 | 274 | avg[0] = avg[1] = avg[2] = avg[3] = avg[4] = avg[5] = 0; |
rebonatto | 0:9df41090ba33 | 275 | printf("\n\n------------------------------Mean VALUES-------------------------------"); |
rebonatto | 0:9df41090ba33 | 276 | printf("\nCHANNEL\t0\t1\t\t2\t3\t\t4\t5"); |
rebonatto | 0:9df41090ba33 | 277 | printf("\n\tPhase1\tLeakage1\tPhase2\tLeakage2\tPhase3\tLeakage3"); |
rebonatto | 0:9df41090ba33 | 278 | printf("\n------------------------------------------------------------------------"); |
rebonatto | 0:9df41090ba33 | 279 | while (cont < 10) |
rebonatto | 0:9df41090ba33 | 280 | { |
rebonatto | 0:9df41090ba33 | 281 | Capture::Wait(); |
rebonatto | 0:9df41090ba33 | 282 | SignalProcessor::CalculateRMSBulk(rms, mv2, under, over); |
rebonatto | 0:9df41090ba33 | 283 | printf("\n%2d\t%.2f\t%.2f\t\t%.2f\t%.2f\t\t%.2f\t%.2f", cont+1,mv2[0],mv2[1],mv2[2],mv2[3],mv2[4],mv2[5]); |
rebonatto | 0:9df41090ba33 | 284 | avg[0] += mv2[0]; |
rebonatto | 0:9df41090ba33 | 285 | avg[1] += mv2[1]; |
rebonatto | 0:9df41090ba33 | 286 | avg[2] += mv2[2]; |
rebonatto | 0:9df41090ba33 | 287 | avg[3] += mv2[3]; |
rebonatto | 0:9df41090ba33 | 288 | avg[4] += mv2[4]; |
rebonatto | 0:9df41090ba33 | 289 | avg[5] += mv2[5]; |
rebonatto | 0:9df41090ba33 | 290 | cont++; |
rebonatto | 0:9df41090ba33 | 291 | } |
rebonatto | 0:9df41090ba33 | 292 | printf("\n------------------------------------------------------------------------"); |
rebonatto | 0:9df41090ba33 | 293 | printf("\nAvg:\t%.2f\t%.2f\t\t%.2f\t%.2f\t\t%.2f\t%.2f",avg[0]/cont,avg[1]/cont,avg[2]/cont,avg[3]/cont,avg[4]/cont,avg[5]/cont); |
rebonatto | 0:9df41090ba33 | 294 | printf("\n------------------------------------------------------------------------\n\n"); |
rebonatto | 0:9df41090ba33 | 295 | } |
rebonatto | 0:9df41090ba33 | 296 | |
rebonatto | 0:9df41090ba33 | 297 | void ShowRMSValues(){ |
rebonatto | 0:9df41090ba33 | 298 | float rms[NUMBER_OF_CHANNELS], avg[NUMBER_OF_CHANNELS], mv2[NUMBER_OF_CHANNELS]; |
rebonatto | 0:9df41090ba33 | 299 | int under[NUMBER_OF_CHANNELS], over[NUMBER_OF_CHANNELS]; |
rebonatto | 0:9df41090ba33 | 300 | |
rebonatto | 0:9df41090ba33 | 301 | int cont = 0; |
rebonatto | 0:9df41090ba33 | 302 | avg[0] = avg[1] = avg[2] = avg[3] = avg[4] = avg[5] = 0; |
rebonatto | 0:9df41090ba33 | 303 | printf("\n\n-------------------------------RMS VALUES-------------------------------"); |
rebonatto | 0:9df41090ba33 | 304 | printf("\nCHANNEL\t0\t1\t\t2\t3\t\t4\t5"); |
rebonatto | 0:9df41090ba33 | 305 | printf("\n\tPhase1\tLeakage1\tPhase2\tLeakage2\tPhase3\tLeakage3"); |
rebonatto | 0:9df41090ba33 | 306 | printf("\n------------------------------------------------------------------------"); |
rebonatto | 0:9df41090ba33 | 307 | while (cont < 10) |
rebonatto | 0:9df41090ba33 | 308 | { |
rebonatto | 0:9df41090ba33 | 309 | Capture::Wait(); |
rebonatto | 0:9df41090ba33 | 310 | SignalProcessor::CalculateRMSBulk(rms, mv2, under, over); |
rebonatto | 0:9df41090ba33 | 311 | printf("\n%2d\t%.2f\t%.2f\t\t%.2f\t%.2f\t\t%.2f\t%.2f", cont+1,rms[0],rms[1],rms[2],rms[3],rms[4],rms[5]); |
rebonatto | 0:9df41090ba33 | 312 | avg[0] += rms[0]; |
rebonatto | 0:9df41090ba33 | 313 | avg[1] += rms[1]; |
rebonatto | 0:9df41090ba33 | 314 | avg[2] += rms[2]; |
rebonatto | 0:9df41090ba33 | 315 | avg[3] += rms[3]; |
rebonatto | 0:9df41090ba33 | 316 | avg[4] += rms[4]; |
rebonatto | 0:9df41090ba33 | 317 | avg[5] += rms[5]; |
rebonatto | 0:9df41090ba33 | 318 | cont++; |
rebonatto | 0:9df41090ba33 | 319 | } |
rebonatto | 0:9df41090ba33 | 320 | printf("\n------------------------------------------------------------------------"); |
rebonatto | 0:9df41090ba33 | 321 | printf("\nAvg:\t%.2f\t%.2f\t\t%.2f\t%.2f\t\t%.2f\t%.2f",avg[0]/cont,avg[1]/cont,avg[2]/cont,avg[3]/cont,avg[4]/cont,avg[5]/cont); |
rebonatto | 0:9df41090ba33 | 322 | printf("\n------------------------------------------------------------------------\n\n"); |
rebonatto | 0:9df41090ba33 | 323 | } |
rebonatto | 0:9df41090ba33 | 324 | |
rebonatto | 0:9df41090ba33 | 325 | void InitializeEthernetLink() |
rebonatto | 0:9df41090ba33 | 326 | { |
rebonatto | 0:9df41090ba33 | 327 | if(Settings::get_Dhcp()) |
rebonatto | 0:9df41090ba33 | 328 | //EthernetIf::Initialize(); //Use DHCP |
rebonatto | 0:9df41090ba33 | 329 | eth.init(); //Use DHCP |
rebonatto | 0:9df41090ba33 | 330 | else |
rebonatto | 0:9df41090ba33 | 331 | //EthernetIf::Initialize(Settings::get_IpAddress(),Settings::get_Netmask(),Settings::get_Gateway()); |
rebonatto | 0:9df41090ba33 | 332 | eth.init(Settings::get_IpAddress(),Settings::get_Netmask(),Settings::get_Gateway()); |
rebonatto | 0:9df41090ba33 | 333 | |
rebonatto | 0:9df41090ba33 | 334 | //EthernetIf::Connect(); |
rebonatto | 0:9df41090ba33 | 335 | eth.connect(); |
rebonatto | 0:9df41090ba33 | 336 | //printf("IP Address is %s\n", EthernetIf::get_IpAddress()); |
rebonatto | 0:9df41090ba33 | 337 | } |