teste de publish
Dependencies: DS1820 HighSpeedAnalogIn devices mbed
diversos.cpp@33:a60abda630f7, 2018-05-30 (annotated)
- Committer:
- brunofgc
- Date:
- Wed May 30 04:24:55 2018 +0000
- Revision:
- 33:a60abda630f7
- Parent:
- 30:8a06a85d8807
- Child:
- 34:348991c54ff3
Ultima vers?o feita com bootloader ruim. 29/05/2018
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
brunofgc | 0:1c0a769988ee | 1 | #include "diversos.h" |
brunofgc | 18:1eefda1f7736 | 2 | // - 09/01/2018 |
brunofgc | 0:1c0a769988ee | 3 | bool eventosRTC::segundos; |
brunofgc | 0:1c0a769988ee | 4 | bool eventosRTC::minutos; |
brunofgc | 0:1c0a769988ee | 5 | bool eventosRTC::rotina10Segundos; |
brunofgc | 18:1eefda1f7736 | 6 | char eventosRTC::rotinaEnvioDeDados; |
brunofgc | 0:1c0a769988ee | 7 | bool eventosRTC::rotina1hora; |
brunofgc | 0:1c0a769988ee | 8 | bool eventosRTC::rotina1segundo; |
brunofgc | 0:1c0a769988ee | 9 | WatchdogTimer diversos::wdt; |
brunofgc | 0:1c0a769988ee | 10 | char commands::buffer[tamBufferCommands]; |
brunofgc | 0:1c0a769988ee | 11 | |
brunofgc | 0:1c0a769988ee | 12 | |
brunofgc | 0:1c0a769988ee | 13 | uint32_t diversos::memAvailable(){ |
brunofgc | 0:1c0a769988ee | 14 | char stackVariable; |
brunofgc | 0:1c0a769988ee | 15 | char *heap; |
brunofgc | 0:1c0a769988ee | 16 | uint32_t result; |
brunofgc | 0:1c0a769988ee | 17 | heap = (char*)malloc(1); |
brunofgc | 0:1c0a769988ee | 18 | result = (uint32_t) ((&stackVariable) - heap); |
brunofgc | 0:1c0a769988ee | 19 | free(heap); |
brunofgc | 0:1c0a769988ee | 20 | return result; |
brunofgc | 0:1c0a769988ee | 21 | } |
brunofgc | 0:1c0a769988ee | 22 | |
brunofgc | 0:1c0a769988ee | 23 | void WatchdogTimer::kick(float s) { |
brunofgc | 0:1c0a769988ee | 24 | LPC_WDT->WDCLKSEL = 0x1; // Set CLK src to PCLK |
brunofgc | 0:1c0a769988ee | 25 | uint32_t clk = SystemCoreClock / 16; // WD has a fixed /4 prescaler, PCLK default is /4 |
brunofgc | 0:1c0a769988ee | 26 | LPC_WDT->WDTC = s * (float)clk; |
brunofgc | 0:1c0a769988ee | 27 | LPC_WDT->WDMOD = 0x3; // Enabled and Reset |
brunofgc | 0:1c0a769988ee | 28 | kick(); |
brunofgc | 0:1c0a769988ee | 29 | } |
brunofgc | 0:1c0a769988ee | 30 | // "kick" or "feed" the dog - reset the watchdog timer |
brunofgc | 0:1c0a769988ee | 31 | // by writing this required bit pattern |
brunofgc | 0:1c0a769988ee | 32 | void WatchdogTimer::kick() { |
brunofgc | 0:1c0a769988ee | 33 | LPC_WDT->WDFEED = 0xAA; |
brunofgc | 0:1c0a769988ee | 34 | LPC_WDT->WDFEED = 0x55; |
brunofgc | 0:1c0a769988ee | 35 | } |
brunofgc | 0:1c0a769988ee | 36 | |
brunofgc | 0:1c0a769988ee | 37 | /*double diversos::stringToFloat(char *p,uint16_t max){ |
brunofgc | 0:1c0a769988ee | 38 | uint16_t caractere=0; |
brunofgc | 0:1c0a769988ee | 39 | double iPart=0.0,dPart=0.0,f=0.0,mult=0.1; |
brunofgc | 0:1c0a769988ee | 40 | while(*p != '.') { |
brunofgc | 0:1c0a769988ee | 41 | caractere++; |
brunofgc | 0:1c0a769988ee | 42 | if(caractere>(max-1)){return 0.0;} |
brunofgc | 0:1c0a769988ee | 43 | iPart = (iPart*10) + (double)((*(p++)-'0')); |
brunofgc | 0:1c0a769988ee | 44 | } |
brunofgc | 0:1c0a769988ee | 45 | p++; |
brunofgc | 0:1c0a769988ee | 46 | while(*p!= '\0') { |
brunofgc | 0:1c0a769988ee | 47 | if(caractere>(max-1)){return 0.0;} |
brunofgc | 0:1c0a769988ee | 48 | dPart += (double)(((*(p++)-'0'))*mult); |
brunofgc | 0:1c0a769988ee | 49 | mult /= 10; |
brunofgc | 0:1c0a769988ee | 50 | } |
brunofgc | 0:1c0a769988ee | 51 | f = iPart + dPart; |
brunofgc | 0:1c0a769988ee | 52 | return f; |
brunofgc | 0:1c0a769988ee | 53 | }*/ |
brunofgc | 0:1c0a769988ee | 54 | |
brunofgc | 0:1c0a769988ee | 55 | /*double diversos::stringToFloat(char *p,uint16_t max){ |
brunofgc | 0:1c0a769988ee | 56 | uint16_t caractere=0; |
brunofgc | 0:1c0a769988ee | 57 | double iPart=0.0,dPart=0.0,f=0.0,mult=0.1; |
brunofgc | 0:1c0a769988ee | 58 | while(p[caractere] != '.'){ |
brunofgc | 0:1c0a769988ee | 59 | caractere++; |
brunofgc | 0:1c0a769988ee | 60 | if(caractere>(max-1)){return 0.0;} |
brunofgc | 0:1c0a769988ee | 61 | iPart = (iPart*10) + (((uint8_t)p[caractere])-30); |
brunofgc | 0:1c0a769988ee | 62 | } |
brunofgc | 0:1c0a769988ee | 63 | caractere++; |
brunofgc | 0:1c0a769988ee | 64 | while(p[caractere]!= '\0'){ |
brunofgc | 0:1c0a769988ee | 65 | if(caractere>(max-1)){return 0.0;} |
brunofgc | 0:1c0a769988ee | 66 | dPart += (((uint8_t)p[caractere])-30)*mult; |
brunofgc | 0:1c0a769988ee | 67 | mult /= 10; |
brunofgc | 0:1c0a769988ee | 68 | } |
brunofgc | 0:1c0a769988ee | 69 | f = iPart + dPart; |
brunofgc | 0:1c0a769988ee | 70 | return f; |
brunofgc | 0:1c0a769988ee | 71 | }*/ |
brunofgc | 0:1c0a769988ee | 72 | |
brunofgc | 3:9598af355293 | 73 | void diversos::strReplace(char *str, char *find, char *replace){ |
brunofgc | 3:9598af355293 | 74 | char aux[100]; |
brunofgc | 3:9598af355293 | 75 | char *ptr; |
brunofgc | 3:9598af355293 | 76 | char replaced = 0; |
brunofgc | 3:9598af355293 | 77 | char maxIterations = 0; |
brunofgc | 3:9598af355293 | 78 | replaced = 0; |
brunofgc | 3:9598af355293 | 79 | strcpy(aux,""); |
brunofgc | 3:9598af355293 | 80 | ptr = strtok(str,find); |
brunofgc | 3:9598af355293 | 81 | while((ptr!=NULL)&&(maxIterations<9)){ |
brunofgc | 3:9598af355293 | 82 | replaced = 1; |
brunofgc | 3:9598af355293 | 83 | maxIterations++; |
brunofgc | 3:9598af355293 | 84 | strcat(aux,ptr); |
brunofgc | 3:9598af355293 | 85 | strcat(aux,replace); |
brunofgc | 3:9598af355293 | 86 | ptr = strtok(NULL,find); |
brunofgc | 3:9598af355293 | 87 | pc.printf("Tirando <%s> em <%s>.\r\n",find,str); |
brunofgc | 3:9598af355293 | 88 | } |
brunofgc | 3:9598af355293 | 89 | if(replaced){ |
brunofgc | 3:9598af355293 | 90 | aux[strlen(aux)-1]=0; |
brunofgc | 3:9598af355293 | 91 | strcpy(str,aux); |
brunofgc | 3:9598af355293 | 92 | } |
brunofgc | 3:9598af355293 | 93 | //-------------------- |
brunofgc | 3:9598af355293 | 94 | } |
brunofgc | 3:9598af355293 | 95 | |
brunofgc | 25:a6da63ed025b | 96 | bool isxdigit(char c){ |
brunofgc | 25:a6da63ed025b | 97 | if((c>47)&&(c<58)){return true;} |
brunofgc | 25:a6da63ed025b | 98 | if((c>64)&&(c<71)){return true;} |
brunofgc | 25:a6da63ed025b | 99 | if((c>96)&&(c<103)){return true;} |
brunofgc | 25:a6da63ed025b | 100 | return false; |
brunofgc | 25:a6da63ed025b | 101 | } |
brunofgc | 25:a6da63ed025b | 102 | |
brunofgc | 25:a6da63ed025b | 103 | void diversos::urldecode2(char *dst, const char *src){ |
brunofgc | 25:a6da63ed025b | 104 | char a, b; |
brunofgc | 25:a6da63ed025b | 105 | while (*src) { |
brunofgc | 25:a6da63ed025b | 106 | if ((*src == '%') && |
brunofgc | 25:a6da63ed025b | 107 | ((a = src[1]) && (b = src[2])) && |
brunofgc | 25:a6da63ed025b | 108 | (isxdigit(a) && isxdigit(b))) { |
brunofgc | 25:a6da63ed025b | 109 | if (a >= 'a') |
brunofgc | 25:a6da63ed025b | 110 | a -= 'a'-'A'; |
brunofgc | 25:a6da63ed025b | 111 | if (a >= 'A') |
brunofgc | 25:a6da63ed025b | 112 | a -= ('A' - 10); |
brunofgc | 25:a6da63ed025b | 113 | else |
brunofgc | 25:a6da63ed025b | 114 | a -= '0'; |
brunofgc | 25:a6da63ed025b | 115 | if (b >= 'a') |
brunofgc | 25:a6da63ed025b | 116 | b -= 'a'-'A'; |
brunofgc | 25:a6da63ed025b | 117 | if (b >= 'A') |
brunofgc | 25:a6da63ed025b | 118 | b -= ('A' - 10); |
brunofgc | 25:a6da63ed025b | 119 | else |
brunofgc | 25:a6da63ed025b | 120 | b -= '0'; |
brunofgc | 25:a6da63ed025b | 121 | *dst++ = 16*a+b; |
brunofgc | 25:a6da63ed025b | 122 | src+=3; |
brunofgc | 25:a6da63ed025b | 123 | } else if (*src == '+') { |
brunofgc | 25:a6da63ed025b | 124 | *dst++ = ' '; |
brunofgc | 25:a6da63ed025b | 125 | src++; |
brunofgc | 25:a6da63ed025b | 126 | } else { |
brunofgc | 25:a6da63ed025b | 127 | *dst++ = *src++; |
brunofgc | 25:a6da63ed025b | 128 | } |
brunofgc | 25:a6da63ed025b | 129 | } |
brunofgc | 25:a6da63ed025b | 130 | *dst++ = '\0'; |
brunofgc | 25:a6da63ed025b | 131 | } |
brunofgc | 25:a6da63ed025b | 132 | |
brunofgc | 4:13ff9c81dc10 | 133 | void diversos::processaPulsosEDs(){ |
brunofgc | 6:d4ebbaaba295 | 134 | if(ED1){pulsosEDs[0]++;} |
brunofgc | 6:d4ebbaaba295 | 135 | if(ED2){pulsosEDs[1]++;} |
brunofgc | 6:d4ebbaaba295 | 136 | if(ED3){pulsosEDs[2]++;} |
brunofgc | 4:13ff9c81dc10 | 137 | } |
brunofgc | 4:13ff9c81dc10 | 138 | |
brunofgc | 0:1c0a769988ee | 139 | void diversos::progressBar(uint32_t progresso,uint32_t total){ |
brunofgc | 0:1c0a769988ee | 140 | int i,j; |
brunofgc | 0:1c0a769988ee | 141 | char maxTam = 20; |
brunofgc | 0:1c0a769988ee | 142 | char engrenagem[4]={179,0x2F,0x2D,0x5C}; |
brunofgc | 0:1c0a769988ee | 143 | |
brunofgc | 0:1c0a769988ee | 144 | j=((double)progresso/(double)total)*maxTam; |
brunofgc | 0:1c0a769988ee | 145 | pc.printf("%c%c%c<",179,engrenagem[(unsigned int)progresso%4],179); |
brunofgc | 0:1c0a769988ee | 146 | for(i=0;i<maxTam;i++){ |
brunofgc | 0:1c0a769988ee | 147 | if(i<=j){ |
brunofgc | 0:1c0a769988ee | 148 | pc.printf("%c",178); |
brunofgc | 0:1c0a769988ee | 149 | }else{ |
brunofgc | 0:1c0a769988ee | 150 | pc.printf("%c",176); |
brunofgc | 0:1c0a769988ee | 151 | } |
brunofgc | 0:1c0a769988ee | 152 | } |
brunofgc | 0:1c0a769988ee | 153 | pc.printf("> %3.0f%% Progresso %5lu de %5lu\r ",((double)progresso/(double)total)*100,progresso,total); |
brunofgc | 0:1c0a769988ee | 154 | } |
brunofgc | 0:1c0a769988ee | 155 | |
brunofgc | 13:b9183b4bc049 | 156 | |
brunofgc | 0:1c0a769988ee | 157 | void commands::exec(uint8_t idConnection){ |
brunofgc | 0:1c0a769988ee | 158 | char *ptr,*pCharFile,*ptrComando; |
brunofgc | 0:1c0a769988ee | 159 | char msg[100]; |
brunofgc | 0:1c0a769988ee | 160 | uint16_t currentCur,totalLengthCommands; |
brunofgc | 0:1c0a769988ee | 161 | static uint16_t fileCheckSum16BIT,checkSum16BIT_Lido; |
brunofgc | 7:ae9c47f62946 | 162 | |
brunofgc | 0:1c0a769988ee | 163 | totalLengthCommands = strlen(commands::buffer); |
brunofgc | 0:1c0a769988ee | 164 | ptrComando = strtok(commands::buffer,";"); |
brunofgc | 0:1c0a769988ee | 165 | |
brunofgc | 0:1c0a769988ee | 166 | do{ |
brunofgc | 2:55b7b466e742 | 167 | |
brunofgc | 2:55b7b466e742 | 168 | |
brunofgc | 2:55b7b466e742 | 169 | |
brunofgc | 0:1c0a769988ee | 170 | ptr=strstr(ptrComando,"DELETE_SENT_FILES"); |
brunofgc | 11:631bea162800 | 171 | if(ptr) { |
brunofgc | 0:1c0a769988ee | 172 | sdCard::deleteSentFiles = true; |
brunofgc | 0:1c0a769988ee | 173 | } |
brunofgc | 0:1c0a769988ee | 174 | |
brunofgc | 0:1c0a769988ee | 175 | ptr=strstr(ptrComando,"SET_RTC:"); |
brunofgc | 0:1c0a769988ee | 176 | if(ptr) { |
brunofgc | 0:1c0a769988ee | 177 | ptr = strtok(ptr,":"); |
brunofgc | 0:1c0a769988ee | 178 | ptr = strtok(NULL,";"); |
brunofgc | 0:1c0a769988ee | 179 | set_time(atoi(ptr)); |
brunofgc | 0:1c0a769988ee | 180 | time_t seconds = time(NULL); |
brunofgc | 0:1c0a769988ee | 181 | pc.printf("Horario atualizado pelo server %s",ctime(&seconds)); |
brunofgc | 0:1c0a769988ee | 182 | } |
brunofgc | 0:1c0a769988ee | 183 | |
brunofgc | 0:1c0a769988ee | 184 | ptr=strstr(ptrComando,"sendArmazenamento"); |
brunofgc | 33:a60abda630f7 | 185 | if(ptr) { |
brunofgc | 29:823a9da3696b | 186 | sprintf(msg,"sendArmazenamento_ack"); |
brunofgc | 29:823a9da3696b | 187 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 33:a60abda630f7 | 188 | eventosRTC::rotinaEnvioDeDados=maxTentativasEnvioDados; |
brunofgc | 33:a60abda630f7 | 189 | modemCom::timeOutEnvioDados=maxTimeEnvioDados; |
brunofgc | 29:823a9da3696b | 190 | } |
brunofgc | 29:823a9da3696b | 191 | |
brunofgc | 29:823a9da3696b | 192 | ptr=strstr(ptrComando,"deleteArmazenamento"); |
brunofgc | 29:823a9da3696b | 193 | if(ptr) { |
brunofgc | 29:823a9da3696b | 194 | sdCard::deleteBanks(2); |
brunofgc | 29:823a9da3696b | 195 | sprintf(msg,"deleteArmazenamento_ack"); |
brunofgc | 29:823a9da3696b | 196 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 0:1c0a769988ee | 197 | } |
brunofgc | 0:1c0a769988ee | 198 | |
brunofgc | 0:1c0a769988ee | 199 | ptr=strstr(ptrComando,"StartSendFile"); |
brunofgc | 0:1c0a769988ee | 200 | if(ptr){ |
brunofgc | 0:1c0a769988ee | 201 | modemCom::status.timeOut=100; |
brunofgc | 13:b9183b4bc049 | 202 | sdCard::nBytesArquivoRecebidos = 0; |
brunofgc | 14:c0162ab2a951 | 203 | sdCard::checkSum = 0; |
brunofgc | 0:1c0a769988ee | 204 | strtok(ptr,",");//Descartando inicio |
brunofgc | 0:1c0a769988ee | 205 | pCharFile = strtok(NULL,",");//Selecionando nome do arquivo |
brunofgc | 0:1c0a769988ee | 206 | strcpy(sdCard::nomeArquivoEmRecebimento,pCharFile); |
brunofgc | 0:1c0a769988ee | 207 | pCharFile = strtok(NULL,";");//Selecionando string checkSum16BIT |
brunofgc | 0:1c0a769988ee | 208 | fileCheckSum16BIT = atoi(pCharFile); |
brunofgc | 0:1c0a769988ee | 209 | remove("/sd/RAD/tempFile.bin"); |
brunofgc | 0:1c0a769988ee | 210 | pc.printf("Iniciando recepcao do server arquivo deviceCfg.\n"); |
brunofgc | 33:a60abda630f7 | 211 | modemCom::status.recebendoArquivoDoServer = 250; |
brunofgc | 0:1c0a769988ee | 212 | |
brunofgc | 22:cb832a9bc704 | 213 | |
brunofgc | 22:cb832a9bc704 | 214 | |
brunofgc | 29:823a9da3696b | 215 | /* |
brunofgc | 22:cb832a9bc704 | 216 | sprintf(msg,"AT+CIPSEND=%u,%lu\r\n",idConnection,10); |
brunofgc | 22:cb832a9bc704 | 217 | if(modemCom::sendToModem(msg,1,&modemCom::status.OK,NULL,20,3,1000)){ |
brunofgc | 22:cb832a9bc704 | 218 | modemCom::sendToModem("sendData\r\n",0,NULL,NULL,20,3,1000); |
brunofgc | 22:cb832a9bc704 | 219 | } |
brunofgc | 29:823a9da3696b | 220 | */ |
brunofgc | 29:823a9da3696b | 221 | sprintf(msg,"sendData\r\n"); |
brunofgc | 29:823a9da3696b | 222 | modemCom::cipSend(idConnection,msg,10); |
brunofgc | 22:cb832a9bc704 | 223 | /* |
brunofgc | 0:1c0a769988ee | 224 | modem.puts(modemCom::bufIn); |
brunofgc | 0:1c0a769988ee | 225 | osDelay(100); |
brunofgc | 22:cb832a9bc704 | 226 | modem.puts("sendData\r\n");*/ |
brunofgc | 0:1c0a769988ee | 227 | |
brunofgc | 22:cb832a9bc704 | 228 | //pc.printf("sendData\n"); |
brunofgc | 29:823a9da3696b | 229 | modemCom::timeOutModem = 150; |
brunofgc | 0:1c0a769988ee | 230 | return; |
brunofgc | 0:1c0a769988ee | 231 | } |
brunofgc | 0:1c0a769988ee | 232 | |
brunofgc | 0:1c0a769988ee | 233 | ptr=strstr(ptrComando,"StopSendFile"); |
brunofgc | 0:1c0a769988ee | 234 | if(ptr){ |
brunofgc | 14:c0162ab2a951 | 235 | pc.printf("Finalizando recepcao de arquivo.\n"); |
brunofgc | 14:c0162ab2a951 | 236 | checkSum16BIT_Lido = sdCard::checkSum;//sdCard::calcCheckSum16BITFile("/sd/RAD/tempFile.bin"); |
brunofgc | 14:c0162ab2a951 | 237 | pc.printf("Feito o calculo de CRC = %lu.\n",checkSum16BIT_Lido); |
brunofgc | 0:1c0a769988ee | 238 | if(fileCheckSum16BIT == checkSum16BIT_Lido){ |
brunofgc | 29:823a9da3696b | 239 | if(sdCard::file_rename("/sd/RAD/tempFile.bin",sdCard::nomeArquivoEmRecebimento)){ |
brunofgc | 0:1c0a769988ee | 240 | sprintf(msg,"File Received checkSum16BIT_Lido <%lu>.\r\n",checkSum16BIT_Lido); |
brunofgc | 0:1c0a769988ee | 241 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 0:1c0a769988ee | 242 | pc.printf("File Received checkSum16BIT_Lido <%lu>.\r\n",checkSum16BIT_Lido); |
brunofgc | 0:1c0a769988ee | 243 | |
brunofgc | 21:b9315cdd9275 | 244 | if(strstr(sdCard::nomeArquivoEmRecebimento,"config.bin")!=NULL){ |
brunofgc | 21:b9315cdd9275 | 245 | pc.printf("Resetando o drome.\r\n"); |
brunofgc | 21:b9315cdd9275 | 246 | hardwareReset=true; |
brunofgc | 21:b9315cdd9275 | 247 | } |
brunofgc | 21:b9315cdd9275 | 248 | |
brunofgc | 0:1c0a769988ee | 249 | if(strstr(sdCard::nomeArquivoEmRecebimento,"devices.cfg")!=NULL){ |
brunofgc | 10:263c093f8977 | 250 | sdCard::deleteBanks(2); |
brunofgc | 0:1c0a769988ee | 251 | pc.printf("Resetando o drome.\r\n"); |
brunofgc | 0:1c0a769988ee | 252 | hardwareReset=true; |
brunofgc | 0:1c0a769988ee | 253 | } |
brunofgc | 0:1c0a769988ee | 254 | |
brunofgc | 13:b9183b4bc049 | 255 | if(strstr(sdCard::nomeArquivoEmRecebimento,"firmware.bin")!=NULL){ |
brunofgc | 14:c0162ab2a951 | 256 | pc.printf("Chamando bootloader.\r\n"); |
brunofgc | 13:b9183b4bc049 | 257 | callBootLoader = true; |
brunofgc | 13:b9183b4bc049 | 258 | } |
brunofgc | 0:1c0a769988ee | 259 | }else{ |
brunofgc | 0:1c0a769988ee | 260 | //modemCom::sendBufferCommandMode(2,"FileCorrupted.\r\n",strlen("FileCorrupted.\r\n")); |
brunofgc | 4:13ff9c81dc10 | 261 | sprintf(msg,"erro"); |
brunofgc | 0:1c0a769988ee | 262 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 0:1c0a769988ee | 263 | pc.printf("Recebido correto mas n foi possivel renomear arquivo.\r\n"); |
brunofgc | 17:9b0eecbacbaa | 264 | } |
brunofgc | 0:1c0a769988ee | 265 | }else{ |
brunofgc | 0:1c0a769988ee | 266 | /*sprintf(diversos::msg,"File Corrupted checkSum16BIT_Lido <%lu>.\r\n",checkSum16BIT_Lido); |
brunofgc | 0:1c0a769988ee | 267 | modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/ |
brunofgc | 20:da1b8d80ba00 | 268 | sprintf(msg,"erro"); |
brunofgc | 0:1c0a769988ee | 269 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 0:1c0a769988ee | 270 | pc.printf("File Corrupted checkSum16BIT_Lido <%lu>.\r\n",checkSum16BIT_Lido); |
brunofgc | 0:1c0a769988ee | 271 | } |
brunofgc | 29:823a9da3696b | 272 | modemCom::status.recebendoArquivoDoServer = 0; |
brunofgc | 9:cf406384efd9 | 273 | modemCom::timeOutModem = 50; |
brunofgc | 29:823a9da3696b | 274 | modemCom::status.timeOut = 30; |
brunofgc | 0:1c0a769988ee | 275 | } |
brunofgc | 0:1c0a769988ee | 276 | |
brunofgc | 0:1c0a769988ee | 277 | /*ptr=strstr(ptrComando,"requestFile,"); |
brunofgc | 0:1c0a769988ee | 278 | if(ptr){ |
brunofgc | 0:1c0a769988ee | 279 | FILE *fp; |
brunofgc | 0:1c0a769988ee | 280 | char c; |
brunofgc | 0:1c0a769988ee | 281 | strtok(ptr,","); |
brunofgc | 0:1c0a769988ee | 282 | pCharFile = strtok(NULL,";"); |
brunofgc | 0:1c0a769988ee | 283 | |
brunofgc | 0:1c0a769988ee | 284 | fp = fopen(pCharFile,"r"); |
brunofgc | 0:1c0a769988ee | 285 | if(fp!=NULL){ |
brunofgc | 0:1c0a769988ee | 286 | do{ |
brunofgc | 0:1c0a769988ee | 287 | c = fgetc(fp); |
brunofgc | 0:1c0a769988ee | 288 | if(!feof(fp)){modem.printf("%c",c);} |
brunofgc | 0:1c0a769988ee | 289 | modemCom::status.timeOut=10; |
brunofgc | 0:1c0a769988ee | 290 | }while(!feof(fp)); |
brunofgc | 0:1c0a769988ee | 291 | fclose(fp); |
brunofgc | 0:1c0a769988ee | 292 | }else{ |
brunofgc | 0:1c0a769988ee | 293 | modem.printf("Nao foi possivel abrir o arquivo.\n"); |
brunofgc | 0:1c0a769988ee | 294 | } |
brunofgc | 0:1c0a769988ee | 295 | }*/ |
brunofgc | 0:1c0a769988ee | 296 | |
brunofgc | 1:0e0967c88590 | 297 | ptr=strstr(ptrComando,"execAct:"); |
brunofgc | 1:0e0967c88590 | 298 | if(ptr){ |
brunofgc | 1:0e0967c88590 | 299 | char *pChar; |
brunofgc | 1:0e0967c88590 | 300 | uint32_t actId; |
brunofgc | 1:0e0967c88590 | 301 | pChar = strtok(ptr,":"); |
brunofgc | 1:0e0967c88590 | 302 | pChar = strtok(NULL,""); |
brunofgc | 1:0e0967c88590 | 303 | actId = atoi(pChar); |
brunofgc | 30:8a06a85d8807 | 304 | if(execAct(actId)){ |
brunofgc | 1:0e0967c88590 | 305 | sprintf(msg,"execAct_ack"); |
brunofgc | 1:0e0967c88590 | 306 | }else{ |
brunofgc | 1:0e0967c88590 | 307 | sprintf(msg,"execAct_nack"); |
brunofgc | 1:0e0967c88590 | 308 | } |
brunofgc | 1:0e0967c88590 | 309 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 7:ae9c47f62946 | 310 | } |
brunofgc | 1:0e0967c88590 | 311 | |
brunofgc | 33:a60abda630f7 | 312 | if(strstr(ptr,"enviaDadosAoServer")){ |
brunofgc | 2:55b7b466e742 | 313 | sprintf(msg,"ack"); |
brunofgc | 2:55b7b466e742 | 314 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 33:a60abda630f7 | 315 | eventosRTC::rotinaEnvioDeDados=maxTentativasEnvioDados; |
brunofgc | 33:a60abda630f7 | 316 | modemCom::timeOutEnvioDados=maxTimeEnvioDados; |
brunofgc | 2:55b7b466e742 | 317 | } |
brunofgc | 2:55b7b466e742 | 318 | |
brunofgc | 0:1c0a769988ee | 319 | ptr=strstr(ptrComando,"mbwrite:"); |
brunofgc | 0:1c0a769988ee | 320 | if(ptr){ |
brunofgc | 0:1c0a769988ee | 321 | uint8_t addr; |
brunofgc | 0:1c0a769988ee | 322 | uint16_t reg; |
brunofgc | 0:1c0a769988ee | 323 | uint32_t auxMod; |
brunofgc | 0:1c0a769988ee | 324 | char *pChar; |
brunofgc | 0:1c0a769988ee | 325 | |
brunofgc | 1:0e0967c88590 | 326 | //IR |
brunofgc | 1:0e0967c88590 | 327 | if(strstr(ptr,"IR,")){ |
brunofgc | 1:0e0967c88590 | 328 | uint8_t freq=38,porta=0; |
brunofgc | 20:da1b8d80ba00 | 329 | pChar = strtok(ptr,","); |
brunofgc | 1:0e0967c88590 | 330 | freq = atoi(strtok(NULL,",")); |
brunofgc | 20:da1b8d80ba00 | 331 | porta = atoi(strtok(NULL,",")); |
brunofgc | 1:0e0967c88590 | 332 | |
brunofgc | 7:ae9c47f62946 | 333 | pChar = strtok(NULL,"S"); |
brunofgc | 20:da1b8d80ba00 | 334 | deserializaPacoteIR(pChar); |
brunofgc | 1:0e0967c88590 | 335 | enviaComandoIR(freq,porta); |
brunofgc | 1:0e0967c88590 | 336 | sprintf(msg,"WriteIR_ack"); |
brunofgc | 1:0e0967c88590 | 337 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 1:0e0967c88590 | 338 | } |
brunofgc | 1:0e0967c88590 | 339 | |
brunofgc | 0:1c0a769988ee | 340 | //Float |
brunofgc | 0:1c0a769988ee | 341 | if(strstr(ptr,"float,")){ |
brunofgc | 0:1c0a769988ee | 342 | float v_float; |
brunofgc | 0:1c0a769988ee | 343 | |
brunofgc | 0:1c0a769988ee | 344 | //Capturando parametros comuns |
brunofgc | 0:1c0a769988ee | 345 | pChar = strtok(ptr,","); |
brunofgc | 0:1c0a769988ee | 346 | |
brunofgc | 0:1c0a769988ee | 347 | //Parametro 1 |
brunofgc | 0:1c0a769988ee | 348 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 349 | addr = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 350 | |
brunofgc | 0:1c0a769988ee | 351 | //Parametro 2 |
brunofgc | 0:1c0a769988ee | 352 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 353 | reg = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 354 | |
brunofgc | 0:1c0a769988ee | 355 | //Parametro 3 |
brunofgc | 0:1c0a769988ee | 356 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 357 | //v_float = diversos::stringToFloat(pChar,50); |
brunofgc | 0:1c0a769988ee | 358 | v_float = atof(pChar); |
brunofgc | 1:0e0967c88590 | 359 | |
brunofgc | 1:0e0967c88590 | 360 | //Envio o dado via Modbus |
brunofgc | 1:0e0967c88590 | 361 | if(!modBusMaster1::writeFloat(addr,reg,1,&v_float)){ |
brunofgc | 1:0e0967c88590 | 362 | pc.printf("Valor <%f> escrito no registrador %lu do endereco modbus %u.\n",v_float,reg,addr); |
brunofgc | 0:1c0a769988ee | 363 | /*sprintf(diversos::msg,"WriteFloat_ack"); |
brunofgc | 0:1c0a769988ee | 364 | modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/ |
brunofgc | 0:1c0a769988ee | 365 | |
brunofgc | 1:0e0967c88590 | 366 | sprintf(msg,"WriteFloat_ack"); |
brunofgc | 1:0e0967c88590 | 367 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 1:0e0967c88590 | 368 | }else{ |
brunofgc | 1:0e0967c88590 | 369 | pc.printf("Erro ao escrever valor <%f> no registrador %lu do endereco modbus %u.\n",v_float,reg,addr); |
brunofgc | 1:0e0967c88590 | 370 | /*sprintf(diversos::msg,"WriteFloat_nack"); |
brunofgc | 1:0e0967c88590 | 371 | modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/ |
brunofgc | 1:0e0967c88590 | 372 | |
brunofgc | 1:0e0967c88590 | 373 | sprintf(msg,"WriteFloat_nack"); |
brunofgc | 0:1c0a769988ee | 374 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 1:0e0967c88590 | 375 | } |
brunofgc | 1:0e0967c88590 | 376 | } |
brunofgc | 1:0e0967c88590 | 377 | |
brunofgc | 1:0e0967c88590 | 378 | //PWM |
brunofgc | 1:0e0967c88590 | 379 | if(strstr(ptr,"PWM,")){ |
brunofgc | 1:0e0967c88590 | 380 | float v_float; |
brunofgc | 1:0e0967c88590 | 381 | |
brunofgc | 1:0e0967c88590 | 382 | //Capturando parametros comuns |
brunofgc | 1:0e0967c88590 | 383 | pChar = strtok(ptr,","); |
brunofgc | 1:0e0967c88590 | 384 | |
brunofgc | 1:0e0967c88590 | 385 | //Parametro 1 |
brunofgc | 1:0e0967c88590 | 386 | pChar = strtok(NULL,","); |
brunofgc | 1:0e0967c88590 | 387 | addr = atoi(pChar); |
brunofgc | 1:0e0967c88590 | 388 | |
brunofgc | 1:0e0967c88590 | 389 | //Parametro 2 |
brunofgc | 1:0e0967c88590 | 390 | pChar = strtok(NULL,","); |
brunofgc | 1:0e0967c88590 | 391 | reg = atoi(pChar); |
brunofgc | 1:0e0967c88590 | 392 | |
brunofgc | 1:0e0967c88590 | 393 | //Parametro 3 |
brunofgc | 1:0e0967c88590 | 394 | pChar = strtok(NULL,","); |
brunofgc | 1:0e0967c88590 | 395 | //v_float = diversos::stringToFloat(pChar,50); |
brunofgc | 1:0e0967c88590 | 396 | v_float = atof(pChar); |
brunofgc | 1:0e0967c88590 | 397 | |
brunofgc | 1:0e0967c88590 | 398 | pc.printf("\r\n\r\nVerificando conteudo de pChar antes de converter para float <%s>.\r\n",pChar); |
brunofgc | 1:0e0967c88590 | 399 | |
brunofgc | 1:0e0967c88590 | 400 | //Retirando a parte inteira referente ao periodo em us do pwm |
brunofgc | 1:0e0967c88590 | 401 | |
brunofgc | 1:0e0967c88590 | 402 | auxMod = v_float/10; |
brunofgc | 1:0e0967c88590 | 403 | v_float = v_float-(auxMod*10); |
brunofgc | 1:0e0967c88590 | 404 | SD1.period_us(auxMod); |
brunofgc | 1:0e0967c88590 | 405 | pwmPeriod = auxMod; |
brunofgc | 1:0e0967c88590 | 406 | switch(reg){ |
brunofgc | 1:0e0967c88590 | 407 | case 0: |
brunofgc | 1:0e0967c88590 | 408 | SD1.write(v_float); |
brunofgc | 1:0e0967c88590 | 409 | break; |
brunofgc | 1:0e0967c88590 | 410 | case 1: |
brunofgc | 1:0e0967c88590 | 411 | SD2.write(v_float); |
brunofgc | 1:0e0967c88590 | 412 | break; |
brunofgc | 1:0e0967c88590 | 413 | case 2: |
brunofgc | 1:0e0967c88590 | 414 | SD3.write(v_float); |
brunofgc | 1:0e0967c88590 | 415 | break; |
brunofgc | 1:0e0967c88590 | 416 | case 3: |
brunofgc | 1:0e0967c88590 | 417 | SD4.write(v_float); |
brunofgc | 1:0e0967c88590 | 418 | break; |
brunofgc | 1:0e0967c88590 | 419 | case 4: |
brunofgc | 1:0e0967c88590 | 420 | SD5.write(v_float); |
brunofgc | 1:0e0967c88590 | 421 | break; |
brunofgc | 1:0e0967c88590 | 422 | case 5: |
brunofgc | 1:0e0967c88590 | 423 | SD6.write(v_float); |
brunofgc | 1:0e0967c88590 | 424 | break; |
brunofgc | 0:1c0a769988ee | 425 | } |
brunofgc | 1:0e0967c88590 | 426 | pc.printf("Valor puro %f, %lu escrito como periodo e %f como duty no reg %u.\n",v_float,auxMod,v_float,reg); |
brunofgc | 1:0e0967c88590 | 427 | /*sprintf(diversos::msg,"WriteFloat_ack"); |
brunofgc | 1:0e0967c88590 | 428 | modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/ |
brunofgc | 1:0e0967c88590 | 429 | |
brunofgc | 1:0e0967c88590 | 430 | sprintf(msg,"WritePWM_ack"); |
brunofgc | 1:0e0967c88590 | 431 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 0:1c0a769988ee | 432 | } |
brunofgc | 0:1c0a769988ee | 433 | |
brunofgc | 0:1c0a769988ee | 434 | //uint32_t |
brunofgc | 0:1c0a769988ee | 435 | if(strstr(ptr,"uint32_t,")){ |
brunofgc | 0:1c0a769988ee | 436 | uint32_t v_uint32_t; |
brunofgc | 0:1c0a769988ee | 437 | |
brunofgc | 0:1c0a769988ee | 438 | //Capturando parametros comuns |
brunofgc | 0:1c0a769988ee | 439 | pChar = strtok(ptr,","); |
brunofgc | 0:1c0a769988ee | 440 | |
brunofgc | 0:1c0a769988ee | 441 | //Parametro 1 |
brunofgc | 0:1c0a769988ee | 442 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 443 | addr = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 444 | |
brunofgc | 0:1c0a769988ee | 445 | //Parametro 2 |
brunofgc | 0:1c0a769988ee | 446 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 447 | reg = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 448 | |
brunofgc | 0:1c0a769988ee | 449 | //Parametro 3 |
brunofgc | 0:1c0a769988ee | 450 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 451 | v_uint32_t = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 452 | |
brunofgc | 0:1c0a769988ee | 453 | if(!modBusMaster1::writeRegister32BIT(addr,reg,1,&v_uint32_t)){ |
brunofgc | 0:1c0a769988ee | 454 | pc.printf("Valor <%lu> escrito no registrador %lu do endereco modbus %u.\n",v_uint32_t,reg,addr); |
brunofgc | 0:1c0a769988ee | 455 | /*sprintf(diversos::msg,"Write_uint32_t_ack"); |
brunofgc | 0:1c0a769988ee | 456 | modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/ |
brunofgc | 0:1c0a769988ee | 457 | |
brunofgc | 1:0e0967c88590 | 458 | sprintf(msg,"Write_uint32_t_ack"); |
brunofgc | 0:1c0a769988ee | 459 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 0:1c0a769988ee | 460 | }else{ |
brunofgc | 0:1c0a769988ee | 461 | pc.printf("Erro ao escrever valor <%lu> no registrador %lu do endereco modbus %u.\n",v_uint32_t,reg,addr); |
brunofgc | 0:1c0a769988ee | 462 | /*sprintf(diversos::msg,"Write_uint32_t_nack"); |
brunofgc | 0:1c0a769988ee | 463 | modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/ |
brunofgc | 0:1c0a769988ee | 464 | |
brunofgc | 1:0e0967c88590 | 465 | sprintf(msg,"Write_uint32_t_nack"); |
brunofgc | 0:1c0a769988ee | 466 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 0:1c0a769988ee | 467 | } |
brunofgc | 0:1c0a769988ee | 468 | } |
brunofgc | 0:1c0a769988ee | 469 | |
brunofgc | 0:1c0a769988ee | 470 | //uint16_t |
brunofgc | 0:1c0a769988ee | 471 | if(strstr(ptr,"uint16_t,")){ |
brunofgc | 0:1c0a769988ee | 472 | uint16_t v_uint16_t; |
brunofgc | 0:1c0a769988ee | 473 | |
brunofgc | 0:1c0a769988ee | 474 | //Capturando parametros comuns |
brunofgc | 0:1c0a769988ee | 475 | pChar = strtok(ptr,","); |
brunofgc | 0:1c0a769988ee | 476 | |
brunofgc | 0:1c0a769988ee | 477 | //Parametro 1 |
brunofgc | 0:1c0a769988ee | 478 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 479 | addr = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 480 | |
brunofgc | 0:1c0a769988ee | 481 | //Parametro 2 |
brunofgc | 0:1c0a769988ee | 482 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 483 | reg = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 484 | |
brunofgc | 0:1c0a769988ee | 485 | //Parametro 3 |
brunofgc | 0:1c0a769988ee | 486 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 487 | v_uint16_t = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 488 | |
brunofgc | 0:1c0a769988ee | 489 | if(!modBusMaster1::writeRegister16BIT(addr,reg,1,&v_uint16_t)){ |
brunofgc | 0:1c0a769988ee | 490 | pc.printf("Valor <%lu> escrito no registrador %lu do endereco modbus %u.\n",v_uint16_t,reg,addr); |
brunofgc | 0:1c0a769988ee | 491 | /*sprintf(diversos::msg,"Write_uint16_t_ack"); |
brunofgc | 0:1c0a769988ee | 492 | modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/ |
brunofgc | 0:1c0a769988ee | 493 | |
brunofgc | 1:0e0967c88590 | 494 | sprintf(msg,"Write_uint16_t_ack"); |
brunofgc | 0:1c0a769988ee | 495 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 0:1c0a769988ee | 496 | }else{ |
brunofgc | 0:1c0a769988ee | 497 | pc.printf("Erro ao escrever valor <%lu> no registrador %lu do endereco modbus %u.\n",v_uint16_t,reg,addr); |
brunofgc | 0:1c0a769988ee | 498 | /*sprintf(diversos::msg,"Write_uint16_t_nack"); |
brunofgc | 0:1c0a769988ee | 499 | modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg)); */ |
brunofgc | 0:1c0a769988ee | 500 | |
brunofgc | 1:0e0967c88590 | 501 | sprintf(msg,"Write_uint16_t_nack"); |
brunofgc | 0:1c0a769988ee | 502 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 0:1c0a769988ee | 503 | } |
brunofgc | 0:1c0a769988ee | 504 | } |
brunofgc | 0:1c0a769988ee | 505 | |
brunofgc | 0:1c0a769988ee | 506 | //bit |
brunofgc | 0:1c0a769988ee | 507 | if(strstr(ptr,"bit,")){ |
brunofgc | 0:1c0a769988ee | 508 | bool v_bool; |
brunofgc | 0:1c0a769988ee | 509 | |
brunofgc | 0:1c0a769988ee | 510 | //Capturando parametros comuns |
brunofgc | 0:1c0a769988ee | 511 | pChar = strtok(ptr,","); |
brunofgc | 0:1c0a769988ee | 512 | |
brunofgc | 0:1c0a769988ee | 513 | //Parametro 1 |
brunofgc | 0:1c0a769988ee | 514 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 515 | addr = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 516 | |
brunofgc | 0:1c0a769988ee | 517 | //Parametro 2 |
brunofgc | 0:1c0a769988ee | 518 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 519 | reg = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 520 | |
brunofgc | 0:1c0a769988ee | 521 | //Parametro 3 |
brunofgc | 0:1c0a769988ee | 522 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 523 | v_bool = (atoi(pChar) > 0); |
brunofgc | 0:1c0a769988ee | 524 | |
brunofgc | 5:7801f913384e | 525 | if(addr != enderecoControladoraVirtual){ |
brunofgc | 0:1c0a769988ee | 526 | //writeSingleCoil(uint8_t,uint16_t,bool); //Endereço slave, registrador, bool |
brunofgc | 0:1c0a769988ee | 527 | if(!modBusMaster1::writeSingleCoil(addr,reg,v_bool)){ |
brunofgc | 0:1c0a769988ee | 528 | pc.printf("Valor <%u> escrito no registrador %lu do endereco modbus %u.\n",v_bool,reg,addr); |
brunofgc | 0:1c0a769988ee | 529 | /*sprintf(diversos::msg,"Write_bool_ack"); |
brunofgc | 0:1c0a769988ee | 530 | modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/ |
brunofgc | 0:1c0a769988ee | 531 | |
brunofgc | 1:0e0967c88590 | 532 | sprintf(msg,"Write_bool_ack"); |
brunofgc | 0:1c0a769988ee | 533 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 0:1c0a769988ee | 534 | }else{ |
brunofgc | 0:1c0a769988ee | 535 | pc.printf("Erro ao escrever valor <%u> no registrador %lu do endereco modbus %u.\n",v_bool,reg,addr); |
brunofgc | 0:1c0a769988ee | 536 | /*sprintf(diversos::msg,"Write_bool_nack"); |
brunofgc | 0:1c0a769988ee | 537 | modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/ |
brunofgc | 0:1c0a769988ee | 538 | |
brunofgc | 1:0e0967c88590 | 539 | sprintf(msg,"Write_bool_nack"); |
brunofgc | 0:1c0a769988ee | 540 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 0:1c0a769988ee | 541 | } |
brunofgc | 0:1c0a769988ee | 542 | }else{ |
brunofgc | 0:1c0a769988ee | 543 | switch(reg){ |
brunofgc | 0:1c0a769988ee | 544 | case 0: |
brunofgc | 0:1c0a769988ee | 545 | SD1.write(v_bool*1.0f); |
brunofgc | 0:1c0a769988ee | 546 | break; |
brunofgc | 0:1c0a769988ee | 547 | case 1: |
brunofgc | 0:1c0a769988ee | 548 | SD2.write(v_bool*1.0f); |
brunofgc | 0:1c0a769988ee | 549 | break; |
brunofgc | 0:1c0a769988ee | 550 | case 2: |
brunofgc | 0:1c0a769988ee | 551 | SD3.write(v_bool*1.0f); |
brunofgc | 0:1c0a769988ee | 552 | break; |
brunofgc | 0:1c0a769988ee | 553 | case 3: |
brunofgc | 0:1c0a769988ee | 554 | SD4.write(v_bool*1.0f); |
brunofgc | 0:1c0a769988ee | 555 | break; |
brunofgc | 0:1c0a769988ee | 556 | case 4: |
brunofgc | 0:1c0a769988ee | 557 | SD5.write(v_bool*1.0f); |
brunofgc | 0:1c0a769988ee | 558 | break; |
brunofgc | 0:1c0a769988ee | 559 | case 5: |
brunofgc | 0:1c0a769988ee | 560 | SD6.write(v_bool*1.0f); |
brunofgc | 0:1c0a769988ee | 561 | break; |
brunofgc | 0:1c0a769988ee | 562 | case 6: |
brunofgc | 0:1c0a769988ee | 563 | SD7 = v_bool; |
brunofgc | 0:1c0a769988ee | 564 | break; |
brunofgc | 0:1c0a769988ee | 565 | case 7: |
brunofgc | 0:1c0a769988ee | 566 | SD8 = v_bool; |
brunofgc | 0:1c0a769988ee | 567 | break; |
brunofgc | 0:1c0a769988ee | 568 | } |
brunofgc | 0:1c0a769988ee | 569 | pc.printf("Valor <%u> escrito no registrador %lu do endereco modbus %u.\n",v_bool,reg,addr); |
brunofgc | 0:1c0a769988ee | 570 | /*sprintf(diversos::msg,"Write_bool_ack"); |
brunofgc | 0:1c0a769988ee | 571 | modemCom::sendBufferCommandMode(2,diversos::msg,strlen(diversos::msg));*/ |
brunofgc | 0:1c0a769988ee | 572 | |
brunofgc | 1:0e0967c88590 | 573 | sprintf(msg,"Write_bool_ack"); |
brunofgc | 0:1c0a769988ee | 574 | modemCom::sendBufferCommandMode(idConnection,msg,strlen(msg)); |
brunofgc | 0:1c0a769988ee | 575 | } |
brunofgc | 0:1c0a769988ee | 576 | } |
brunofgc | 9:cf406384efd9 | 577 | modemCom::status.timeOut=5; |
brunofgc | 0:1c0a769988ee | 578 | } |
brunofgc | 0:1c0a769988ee | 579 | |
brunofgc | 0:1c0a769988ee | 580 | currentCur = strlen(ptrComando) + 1; //Aqui eu pego onde devo buscar novamente mais algum comando. |
brunofgc | 0:1c0a769988ee | 581 | if(currentCur>=totalLengthCommands){ |
brunofgc | 0:1c0a769988ee | 582 | //modemCom::status.timeOut=10; |
brunofgc | 0:1c0a769988ee | 583 | ptrComando = NULL; |
brunofgc | 0:1c0a769988ee | 584 | }else{ |
brunofgc | 0:1c0a769988ee | 585 | ptrComando = strtok(&ptrComando[currentCur],";"); |
brunofgc | 0:1c0a769988ee | 586 | } |
brunofgc | 0:1c0a769988ee | 587 | }while(ptrComando != NULL);//Este loop executa cada instrução. |
brunofgc | 0:1c0a769988ee | 588 | pc.printf("Atendidos todos os comandos.\n"); |
brunofgc | 0:1c0a769988ee | 589 | } |