teste de publish
Dependencies: DS1820 HighSpeedAnalogIn devices mbed
novaDevices_cpp.txt@0:1c0a769988ee, 2017-03-24 (annotated)
- Committer:
- brunofgc
- Date:
- Fri Mar 24 15:54:41 2017 +0000
- Revision:
- 0:1c0a769988ee
Saidas digitais com pwm ok, entradas analogicas ok
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
brunofgc | 0:1c0a769988ee | 1 | #include "devices.h" |
brunofgc | 0:1c0a769988ee | 2 | |
brunofgc | 0:1c0a769988ee | 3 | //Devices |
brunofgc | 0:1c0a769988ee | 4 | device dispositivos[8]; |
brunofgc | 0:1c0a769988ee | 5 | uint8_t devices=0; |
brunofgc | 0:1c0a769988ee | 6 | uint8_t alarmes=0; |
brunofgc | 0:1c0a769988ee | 7 | //Devices |
brunofgc | 0:1c0a769988ee | 8 | |
brunofgc | 0:1c0a769988ee | 9 | enum { |
brunofgc | 0:1c0a769988ee | 10 | estadoConfiguracao_idle = 0, |
brunofgc | 0:1c0a769988ee | 11 | estadoConfiguracao_creatingDevice, |
brunofgc | 0:1c0a769988ee | 12 | estadoConfiguracao_alarmSet, |
brunofgc | 0:1c0a769988ee | 13 | estadoConfiguracao_readingsSet |
brunofgc | 0:1c0a769988ee | 14 | }; |
brunofgc | 0:1c0a769988ee | 15 | |
brunofgc | 0:1c0a769988ee | 16 | uint8_t resizeArray(uint32_t atual, uint32_t novo, char **array,uint16_t sizeUnit) |
brunofgc | 0:1c0a769988ee | 17 | { |
brunofgc | 0:1c0a769988ee | 18 | uint32_t i; |
brunofgc | 0:1c0a769988ee | 19 | char *p = (char *) malloc(sizeUnit*novo); |
brunofgc | 0:1c0a769988ee | 20 | char *aux; |
brunofgc | 0:1c0a769988ee | 21 | |
brunofgc | 0:1c0a769988ee | 22 | if(p==NULL) { |
brunofgc | 0:1c0a769988ee | 23 | return 0; |
brunofgc | 0:1c0a769988ee | 24 | } |
brunofgc | 0:1c0a769988ee | 25 | |
brunofgc | 0:1c0a769988ee | 26 | aux = *array; |
brunofgc | 0:1c0a769988ee | 27 | |
brunofgc | 0:1c0a769988ee | 28 | if(atual) { |
brunofgc | 0:1c0a769988ee | 29 | //So sigo em frente se tinha algo dentro deste array |
brunofgc | 0:1c0a769988ee | 30 | for(i=0; i<(novo*sizeUnit); i++) { |
brunofgc | 0:1c0a769988ee | 31 | p[i]=aux[i]; |
brunofgc | 0:1c0a769988ee | 32 | } |
brunofgc | 0:1c0a769988ee | 33 | free(aux); |
brunofgc | 0:1c0a769988ee | 34 | } |
brunofgc | 0:1c0a769988ee | 35 | |
brunofgc | 0:1c0a769988ee | 36 | *array = p; |
brunofgc | 0:1c0a769988ee | 37 | return 1; |
brunofgc | 0:1c0a769988ee | 38 | } |
brunofgc | 0:1c0a769988ee | 39 | |
brunofgc | 0:1c0a769988ee | 40 | enum { |
brunofgc | 0:1c0a769988ee | 41 | modBusType_float=0, |
brunofgc | 0:1c0a769988ee | 42 | modBusType_bit, |
brunofgc | 0:1c0a769988ee | 43 | modBusType_uint8_t, |
brunofgc | 0:1c0a769988ee | 44 | modBusType_uint16_t, |
brunofgc | 0:1c0a769988ee | 45 | modBusType_uint32_t |
brunofgc | 0:1c0a769988ee | 46 | }; |
brunofgc | 0:1c0a769988ee | 47 | |
brunofgc | 0:1c0a769988ee | 48 | void device::floatToBin(uint8_t dir, float *v,uint8_t *p) |
brunofgc | 0:1c0a769988ee | 49 | { |
brunofgc | 0:1c0a769988ee | 50 | //Variáveis locais |
brunofgc | 0:1c0a769988ee | 51 | union { |
brunofgc | 0:1c0a769988ee | 52 | char c[4]; |
brunofgc | 0:1c0a769988ee | 53 | float v; |
brunofgc | 0:1c0a769988ee | 54 | }u; |
brunofgc | 0:1c0a769988ee | 55 | int i; |
brunofgc | 0:1c0a769988ee | 56 | |
brunofgc | 0:1c0a769988ee | 57 | if(dir) { |
brunofgc | 0:1c0a769988ee | 58 | u.v = *v; |
brunofgc | 0:1c0a769988ee | 59 | for(i=0; i<4; i++) { |
brunofgc | 0:1c0a769988ee | 60 | p[i]=u.c[3-i]; |
brunofgc | 0:1c0a769988ee | 61 | } |
brunofgc | 0:1c0a769988ee | 62 | } else { |
brunofgc | 0:1c0a769988ee | 63 | for(i=0; i<4; i++) { |
brunofgc | 0:1c0a769988ee | 64 | u.c[3-i]=p[i]; |
brunofgc | 0:1c0a769988ee | 65 | } |
brunofgc | 0:1c0a769988ee | 66 | *v = u.v; |
brunofgc | 0:1c0a769988ee | 67 | } |
brunofgc | 0:1c0a769988ee | 68 | } |
brunofgc | 0:1c0a769988ee | 69 | |
brunofgc | 0:1c0a769988ee | 70 | void device::uint32_t_ToBin(uint8_t dir, uint32_t *v,uint8_t *p) |
brunofgc | 0:1c0a769988ee | 71 | { |
brunofgc | 0:1c0a769988ee | 72 | //Variáveis locais |
brunofgc | 0:1c0a769988ee | 73 | union { |
brunofgc | 0:1c0a769988ee | 74 | char c[4]; |
brunofgc | 0:1c0a769988ee | 75 | uint32_t v; |
brunofgc | 0:1c0a769988ee | 76 | }u; |
brunofgc | 0:1c0a769988ee | 77 | int i; |
brunofgc | 0:1c0a769988ee | 78 | |
brunofgc | 0:1c0a769988ee | 79 | if(dir) { |
brunofgc | 0:1c0a769988ee | 80 | u.v = *v; |
brunofgc | 0:1c0a769988ee | 81 | for(i=0; i<4; i++) { |
brunofgc | 0:1c0a769988ee | 82 | p[i]=u.c[3-i]; |
brunofgc | 0:1c0a769988ee | 83 | } |
brunofgc | 0:1c0a769988ee | 84 | } else { |
brunofgc | 0:1c0a769988ee | 85 | for(i=0; i<4; i++) { |
brunofgc | 0:1c0a769988ee | 86 | u.c[3-i]=p[i]; |
brunofgc | 0:1c0a769988ee | 87 | } |
brunofgc | 0:1c0a769988ee | 88 | *v = u.v; |
brunofgc | 0:1c0a769988ee | 89 | } |
brunofgc | 0:1c0a769988ee | 90 | } |
brunofgc | 0:1c0a769988ee | 91 | |
brunofgc | 0:1c0a769988ee | 92 | void device::uint16_t_ToBin(uint8_t dir, uint16_t *v,uint8_t *p) |
brunofgc | 0:1c0a769988ee | 93 | { |
brunofgc | 0:1c0a769988ee | 94 | //Variáveis locais |
brunofgc | 0:1c0a769988ee | 95 | union { |
brunofgc | 0:1c0a769988ee | 96 | char c[2]; |
brunofgc | 0:1c0a769988ee | 97 | uint32_t v; |
brunofgc | 0:1c0a769988ee | 98 | }u; |
brunofgc | 0:1c0a769988ee | 99 | int i; |
brunofgc | 0:1c0a769988ee | 100 | |
brunofgc | 0:1c0a769988ee | 101 | if(dir) { |
brunofgc | 0:1c0a769988ee | 102 | u.v = *v; |
brunofgc | 0:1c0a769988ee | 103 | for(i=0; i<2; i++) { |
brunofgc | 0:1c0a769988ee | 104 | p[i]=u.c[1-i]; |
brunofgc | 0:1c0a769988ee | 105 | } |
brunofgc | 0:1c0a769988ee | 106 | } else { |
brunofgc | 0:1c0a769988ee | 107 | for(i=0; i<2; i++) { |
brunofgc | 0:1c0a769988ee | 108 | u.c[1-i]=p[i]; |
brunofgc | 0:1c0a769988ee | 109 | } |
brunofgc | 0:1c0a769988ee | 110 | *v = u.v; |
brunofgc | 0:1c0a769988ee | 111 | } |
brunofgc | 0:1c0a769988ee | 112 | } |
brunofgc | 0:1c0a769988ee | 113 | |
brunofgc | 0:1c0a769988ee | 114 | |
brunofgc | 0:1c0a769988ee | 115 | void device::setReading(char *linha) |
brunofgc | 0:1c0a769988ee | 116 | { |
brunofgc | 0:1c0a769988ee | 117 | uint8_t addr=0; |
brunofgc | 0:1c0a769988ee | 118 | uint8_t func=0; |
brunofgc | 0:1c0a769988ee | 119 | uint16_t reg=0; |
brunofgc | 0:1c0a769988ee | 120 | uint8_t numRegs=0; |
brunofgc | 0:1c0a769988ee | 121 | char *pChar; |
brunofgc | 0:1c0a769988ee | 122 | bool inputData = false; |
brunofgc | 0:1c0a769988ee | 123 | |
brunofgc | 0:1c0a769988ee | 124 | //printf("Linha <%s>.\n",linha); |
brunofgc | 0:1c0a769988ee | 125 | if(strstr(linha,"readingsSet")) { |
brunofgc | 0:1c0a769988ee | 126 | return; |
brunofgc | 0:1c0a769988ee | 127 | } |
brunofgc | 0:1c0a769988ee | 128 | |
brunofgc | 0:1c0a769988ee | 129 | //printf("O tamanho da struct eh <%lu>.\n",sizeof(reading)); |
brunofgc | 0:1c0a769988ee | 130 | |
brunofgc | 0:1c0a769988ee | 131 | |
brunofgc | 0:1c0a769988ee | 132 | if(resizeArray(this->numReadings, this->numReadings+1, (char **)&this->readings,sizeof(reading))) { |
brunofgc | 0:1c0a769988ee | 133 | //printf("Resize em readings beleza!\n"); |
brunofgc | 0:1c0a769988ee | 134 | this->numReadings++; |
brunofgc | 0:1c0a769988ee | 135 | } |
brunofgc | 0:1c0a769988ee | 136 | |
brunofgc | 0:1c0a769988ee | 137 | if(strstr(linha,"float,")) { |
brunofgc | 0:1c0a769988ee | 138 | this->readings[this->numReadings-1].type=modBusType_float; |
brunofgc | 0:1c0a769988ee | 139 | inputData = true; |
brunofgc | 0:1c0a769988ee | 140 | } |
brunofgc | 0:1c0a769988ee | 141 | |
brunofgc | 0:1c0a769988ee | 142 | if(strstr(linha,"uint32_t,")) { |
brunofgc | 0:1c0a769988ee | 143 | this->readings[this->numReadings-1].type=modBusType_uint32_t; |
brunofgc | 0:1c0a769988ee | 144 | inputData = true; |
brunofgc | 0:1c0a769988ee | 145 | } |
brunofgc | 0:1c0a769988ee | 146 | |
brunofgc | 0:1c0a769988ee | 147 | if(strstr(linha,"uint16_t,")) { |
brunofgc | 0:1c0a769988ee | 148 | this->readings[this->numReadings-1].type=modBusType_uint16_t; |
brunofgc | 0:1c0a769988ee | 149 | inputData = true; |
brunofgc | 0:1c0a769988ee | 150 | } |
brunofgc | 0:1c0a769988ee | 151 | |
brunofgc | 0:1c0a769988ee | 152 | if(strstr(linha,"uint8_t,")) { |
brunofgc | 0:1c0a769988ee | 153 | this->readings[this->numReadings-1].type=modBusType_uint8_t; |
brunofgc | 0:1c0a769988ee | 154 | inputData = true; |
brunofgc | 0:1c0a769988ee | 155 | } |
brunofgc | 0:1c0a769988ee | 156 | |
brunofgc | 0:1c0a769988ee | 157 | if(strstr(linha,"bool,")) { |
brunofgc | 0:1c0a769988ee | 158 | this->readings[this->numReadings-1].type=modBusType_bit; |
brunofgc | 0:1c0a769988ee | 159 | inputData = true; |
brunofgc | 0:1c0a769988ee | 160 | } |
brunofgc | 0:1c0a769988ee | 161 | |
brunofgc | 0:1c0a769988ee | 162 | if(inputData){ |
brunofgc | 0:1c0a769988ee | 163 | pChar = strtok(linha,","); |
brunofgc | 0:1c0a769988ee | 164 | |
brunofgc | 0:1c0a769988ee | 165 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 166 | addr = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 167 | |
brunofgc | 0:1c0a769988ee | 168 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 169 | func = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 170 | |
brunofgc | 0:1c0a769988ee | 171 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 172 | reg = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 173 | |
brunofgc | 0:1c0a769988ee | 174 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 175 | numRegs = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 176 | |
brunofgc | 0:1c0a769988ee | 177 | this->readings[this->numReadings-1].addr=addr; |
brunofgc | 0:1c0a769988ee | 178 | this->readings[this->numReadings-1].func=func; |
brunofgc | 0:1c0a769988ee | 179 | this->readings[this->numReadings-1].reg=reg; |
brunofgc | 0:1c0a769988ee | 180 | this->readings[this->numReadings-1].numRegs=numRegs; |
brunofgc | 0:1c0a769988ee | 181 | } |
brunofgc | 0:1c0a769988ee | 182 | |
brunofgc | 0:1c0a769988ee | 183 | } |
brunofgc | 0:1c0a769988ee | 184 | |
brunofgc | 0:1c0a769988ee | 185 | void device::setAlarm(char *linha) |
brunofgc | 0:1c0a769988ee | 186 | { |
brunofgc | 0:1c0a769988ee | 187 | float floatVar; |
brunofgc | 0:1c0a769988ee | 188 | uint32_t aux32_t; |
brunofgc | 0:1c0a769988ee | 189 | uint16_t aux16_t; |
brunofgc | 0:1c0a769988ee | 190 | char *pChar; |
brunofgc | 0:1c0a769988ee | 191 | |
brunofgc | 0:1c0a769988ee | 192 | if(strstr(linha,"alarmSet")) { |
brunofgc | 0:1c0a769988ee | 193 | if(resizeArray(this->numAlarms, this->numAlarms+1, (char **)&this->alarms,sizeof(alarm))) { |
brunofgc | 0:1c0a769988ee | 194 | this->numAlarms++; |
brunofgc | 0:1c0a769988ee | 195 | } |
brunofgc | 0:1c0a769988ee | 196 | } |
brunofgc | 0:1c0a769988ee | 197 | |
brunofgc | 0:1c0a769988ee | 198 | if(strstr(linha,"name:")) { |
brunofgc | 0:1c0a769988ee | 199 | strtok(linha,":"); |
brunofgc | 0:1c0a769988ee | 200 | strcpy(this->alarms[this->numAlarms-1].name,strtok(NULL,"\r\n")); |
brunofgc | 0:1c0a769988ee | 201 | } |
brunofgc | 0:1c0a769988ee | 202 | |
brunofgc | 0:1c0a769988ee | 203 | |
brunofgc | 0:1c0a769988ee | 204 | if(strstr(linha,"seconds:")) { |
brunofgc | 0:1c0a769988ee | 205 | //sscanf(linha,"seconds:%lu",&this->alarms[this->numAlarms-1].seconds); |
brunofgc | 0:1c0a769988ee | 206 | strtok(linha,":"); |
brunofgc | 0:1c0a769988ee | 207 | pChar = strtok(NULL,"\r\n"); |
brunofgc | 0:1c0a769988ee | 208 | this->alarms[this->numAlarms-1].seconds = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 209 | } |
brunofgc | 0:1c0a769988ee | 210 | |
brunofgc | 0:1c0a769988ee | 211 | |
brunofgc | 0:1c0a769988ee | 212 | if(strstr(linha,"bool:state")){ |
brunofgc | 0:1c0a769988ee | 213 | this->alarms[this->numAlarms-1].type=modBusType_bit; |
brunofgc | 0:1c0a769988ee | 214 | |
brunofgc | 0:1c0a769988ee | 215 | pChar = strtok(linha,","); |
brunofgc | 0:1c0a769988ee | 216 | |
brunofgc | 0:1c0a769988ee | 217 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 218 | this->alarms[this->numAlarms-1].addrModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 219 | |
brunofgc | 0:1c0a769988ee | 220 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 221 | this->alarms[this->numAlarms-1].funcModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 222 | |
brunofgc | 0:1c0a769988ee | 223 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 224 | this->alarms[this->numAlarms-1].regModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 225 | |
brunofgc | 0:1c0a769988ee | 226 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 227 | this->alarms[this->numAlarms-1].max[0]=atoi(pChar); |
brunofgc | 0:1c0a769988ee | 228 | } |
brunofgc | 0:1c0a769988ee | 229 | |
brunofgc | 0:1c0a769988ee | 230 | |
brunofgc | 0:1c0a769988ee | 231 | if(strstr(linha,"max:float")) { |
brunofgc | 0:1c0a769988ee | 232 | this->alarms[this->numAlarms-1].type=modBusType_float; |
brunofgc | 0:1c0a769988ee | 233 | //sscanf(linha,"max:float,%lu,%lu,%lu,%s",&aux1,&aux2,&aux3,stringVar); |
brunofgc | 0:1c0a769988ee | 234 | //this->alarms[this->numAlarms-1].addrModbusRead = aux1; |
brunofgc | 0:1c0a769988ee | 235 | //this->alarms[this->numAlarms-1].funcModbusRead = aux2; |
brunofgc | 0:1c0a769988ee | 236 | //this->alarms[this->numAlarms-1].regModbusRead = aux3; |
brunofgc | 0:1c0a769988ee | 237 | |
brunofgc | 0:1c0a769988ee | 238 | |
brunofgc | 0:1c0a769988ee | 239 | strtok(linha,","); |
brunofgc | 0:1c0a769988ee | 240 | |
brunofgc | 0:1c0a769988ee | 241 | //Parametro 1; |
brunofgc | 0:1c0a769988ee | 242 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 243 | this->alarms[this->numAlarms-1].addrModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 244 | |
brunofgc | 0:1c0a769988ee | 245 | //Parametro 2; |
brunofgc | 0:1c0a769988ee | 246 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 247 | this->alarms[this->numAlarms-1].funcModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 248 | |
brunofgc | 0:1c0a769988ee | 249 | //Parametro 3; |
brunofgc | 0:1c0a769988ee | 250 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 251 | this->alarms[this->numAlarms-1].regModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 252 | |
brunofgc | 0:1c0a769988ee | 253 | |
brunofgc | 0:1c0a769988ee | 254 | |
brunofgc | 0:1c0a769988ee | 255 | //Parametro 4; |
brunofgc | 0:1c0a769988ee | 256 | pChar = strtok(NULL,"\r\n"); |
brunofgc | 0:1c0a769988ee | 257 | floatVar = diversos::stringToFloat(pChar,100); |
brunofgc | 0:1c0a769988ee | 258 | |
brunofgc | 0:1c0a769988ee | 259 | this->floatToBin(1,&floatVar,&this->alarms[this->numAlarms-1].max[0]); |
brunofgc | 0:1c0a769988ee | 260 | } |
brunofgc | 0:1c0a769988ee | 261 | |
brunofgc | 0:1c0a769988ee | 262 | |
brunofgc | 0:1c0a769988ee | 263 | |
brunofgc | 0:1c0a769988ee | 264 | if(strstr(linha,"min:float")) { |
brunofgc | 0:1c0a769988ee | 265 | this->alarms[this->numAlarms-1].type=modBusType_float; |
brunofgc | 0:1c0a769988ee | 266 | strtok(linha,","); |
brunofgc | 0:1c0a769988ee | 267 | pChar = strtok(NULL,"\r\n"); |
brunofgc | 0:1c0a769988ee | 268 | floatVar = diversos::stringToFloat(pChar,100); |
brunofgc | 0:1c0a769988ee | 269 | this->floatToBin(1,&floatVar,&this->alarms[this->numAlarms-1].min[0]); |
brunofgc | 0:1c0a769988ee | 270 | } |
brunofgc | 0:1c0a769988ee | 271 | |
brunofgc | 0:1c0a769988ee | 272 | if(strstr(linha,"max:uint32_t")) { |
brunofgc | 0:1c0a769988ee | 273 | this->alarms[this->numAlarms-1].type=modBusType_uint32_t; |
brunofgc | 0:1c0a769988ee | 274 | //sscanf(linha,"max:uint32_t,%lu,%lu,%lu,%lu",&aux1,&aux2,&aux3,&aux4); |
brunofgc | 0:1c0a769988ee | 275 | strtok(linha,","); |
brunofgc | 0:1c0a769988ee | 276 | |
brunofgc | 0:1c0a769988ee | 277 | //parametro1 |
brunofgc | 0:1c0a769988ee | 278 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 279 | this->alarms[this->numAlarms-1].addrModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 280 | |
brunofgc | 0:1c0a769988ee | 281 | //parametro2 |
brunofgc | 0:1c0a769988ee | 282 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 283 | this->alarms[this->numAlarms-1].funcModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 284 | |
brunofgc | 0:1c0a769988ee | 285 | //parametro3 |
brunofgc | 0:1c0a769988ee | 286 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 287 | this->alarms[this->numAlarms-1].regModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 288 | |
brunofgc | 0:1c0a769988ee | 289 | //parametro4 |
brunofgc | 0:1c0a769988ee | 290 | pChar = strtok(NULL,"\r\n"); |
brunofgc | 0:1c0a769988ee | 291 | aux32_t = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 292 | |
brunofgc | 0:1c0a769988ee | 293 | this->uint32_t_ToBin(1,&aux32_t,&this->alarms[this->numAlarms-1].max[0]); |
brunofgc | 0:1c0a769988ee | 294 | } |
brunofgc | 0:1c0a769988ee | 295 | |
brunofgc | 0:1c0a769988ee | 296 | if(strstr(linha,"min:uint32_t")) { |
brunofgc | 0:1c0a769988ee | 297 | this->alarms[this->numAlarms-1].type=modBusType_uint32_t; |
brunofgc | 0:1c0a769988ee | 298 | //sscanf(linha,"min:uint32_t,%lu",&aux4); |
brunofgc | 0:1c0a769988ee | 299 | strtok(linha,","); |
brunofgc | 0:1c0a769988ee | 300 | pChar = strtok(NULL,"\r\n"); |
brunofgc | 0:1c0a769988ee | 301 | aux32_t = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 302 | |
brunofgc | 0:1c0a769988ee | 303 | this->uint32_t_ToBin(1,&aux32_t,&this->alarms[this->numAlarms-1].min[0]); |
brunofgc | 0:1c0a769988ee | 304 | } |
brunofgc | 0:1c0a769988ee | 305 | |
brunofgc | 0:1c0a769988ee | 306 | if(strstr(linha,"max:uint16_t")) { |
brunofgc | 0:1c0a769988ee | 307 | this->alarms[this->numAlarms-1].type=modBusType_uint16_t; |
brunofgc | 0:1c0a769988ee | 308 | strtok(linha,","); |
brunofgc | 0:1c0a769988ee | 309 | |
brunofgc | 0:1c0a769988ee | 310 | //parametro1 |
brunofgc | 0:1c0a769988ee | 311 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 312 | this->alarms[this->numAlarms-1].addrModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 313 | |
brunofgc | 0:1c0a769988ee | 314 | //parametro2 |
brunofgc | 0:1c0a769988ee | 315 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 316 | this->alarms[this->numAlarms-1].funcModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 317 | |
brunofgc | 0:1c0a769988ee | 318 | //parametro3 |
brunofgc | 0:1c0a769988ee | 319 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 320 | this->alarms[this->numAlarms-1].regModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 321 | |
brunofgc | 0:1c0a769988ee | 322 | //parametro4 |
brunofgc | 0:1c0a769988ee | 323 | pChar = strtok(NULL,"\r\n"); |
brunofgc | 0:1c0a769988ee | 324 | aux16_t = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 325 | |
brunofgc | 0:1c0a769988ee | 326 | this->uint16_t_ToBin(1,&aux16_t,&this->alarms[this->numAlarms-1].max[0]); |
brunofgc | 0:1c0a769988ee | 327 | } |
brunofgc | 0:1c0a769988ee | 328 | |
brunofgc | 0:1c0a769988ee | 329 | if(strstr(linha,"min:uint16_t")) { |
brunofgc | 0:1c0a769988ee | 330 | this->alarms[this->numAlarms-1].type=modBusType_uint16_t; |
brunofgc | 0:1c0a769988ee | 331 | strtok(linha,","); |
brunofgc | 0:1c0a769988ee | 332 | pChar = strtok(NULL,"\r\n"); |
brunofgc | 0:1c0a769988ee | 333 | aux16_t = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 334 | |
brunofgc | 0:1c0a769988ee | 335 | this->uint16_t_ToBin(1,&aux16_t,&this->alarms[this->numAlarms-1].min[0]); |
brunofgc | 0:1c0a769988ee | 336 | } |
brunofgc | 0:1c0a769988ee | 337 | |
brunofgc | 0:1c0a769988ee | 338 | if(strstr(linha,"max:uint8_t")) { |
brunofgc | 0:1c0a769988ee | 339 | this->alarms[this->numAlarms-1].type=modBusType_uint8_t; |
brunofgc | 0:1c0a769988ee | 340 | strtok(linha,","); |
brunofgc | 0:1c0a769988ee | 341 | |
brunofgc | 0:1c0a769988ee | 342 | //parametro1 |
brunofgc | 0:1c0a769988ee | 343 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 344 | this->alarms[this->numAlarms-1].addrModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 345 | |
brunofgc | 0:1c0a769988ee | 346 | //parametro2 |
brunofgc | 0:1c0a769988ee | 347 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 348 | this->alarms[this->numAlarms-1].funcModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 349 | |
brunofgc | 0:1c0a769988ee | 350 | //parametro3 |
brunofgc | 0:1c0a769988ee | 351 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 352 | this->alarms[this->numAlarms-1].regModbusRead = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 353 | |
brunofgc | 0:1c0a769988ee | 354 | //parametro4 |
brunofgc | 0:1c0a769988ee | 355 | pChar = strtok(NULL,"\r\n"); |
brunofgc | 0:1c0a769988ee | 356 | aux16_t = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 357 | |
brunofgc | 0:1c0a769988ee | 358 | this->alarms[this->numAlarms-1].max[0]=aux16_t; |
brunofgc | 0:1c0a769988ee | 359 | } |
brunofgc | 0:1c0a769988ee | 360 | |
brunofgc | 0:1c0a769988ee | 361 | if(strstr(linha,"min:uint8_t")) { |
brunofgc | 0:1c0a769988ee | 362 | this->alarms[this->numAlarms-1].type=modBusType_uint8_t; |
brunofgc | 0:1c0a769988ee | 363 | strtok(linha,","); |
brunofgc | 0:1c0a769988ee | 364 | pChar = strtok(NULL,"\r\n"); |
brunofgc | 0:1c0a769988ee | 365 | aux16_t = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 366 | |
brunofgc | 0:1c0a769988ee | 367 | this->alarms[this->numAlarms-1].min[0]=aux16_t; |
brunofgc | 0:1c0a769988ee | 368 | } |
brunofgc | 0:1c0a769988ee | 369 | |
brunofgc | 0:1c0a769988ee | 370 | |
brunofgc | 0:1c0a769988ee | 371 | |
brunofgc | 0:1c0a769988ee | 372 | if(strstr(linha,"act:modbus:")) { |
brunofgc | 0:1c0a769988ee | 373 | //sscanf(linha,"act:modbus:%u,%u,%u,%u",&aux1,&aux2,&aux3,&aux4); |
brunofgc | 0:1c0a769988ee | 374 | |
brunofgc | 0:1c0a769988ee | 375 | printf("Lido em act <%s>.\n",linha); |
brunofgc | 0:1c0a769988ee | 376 | strtok(linha,":"); |
brunofgc | 0:1c0a769988ee | 377 | strtok(NULL,":"); |
brunofgc | 0:1c0a769988ee | 378 | |
brunofgc | 0:1c0a769988ee | 379 | |
brunofgc | 0:1c0a769988ee | 380 | //parametro1 |
brunofgc | 0:1c0a769988ee | 381 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 382 | this->alarms[this->numAlarms-1].addrModbusWrite = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 383 | |
brunofgc | 0:1c0a769988ee | 384 | //parametro2 |
brunofgc | 0:1c0a769988ee | 385 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 386 | this->alarms[this->numAlarms-1].funcModbusWrite = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 387 | |
brunofgc | 0:1c0a769988ee | 388 | //parametro3 |
brunofgc | 0:1c0a769988ee | 389 | pChar = strtok(NULL,","); |
brunofgc | 0:1c0a769988ee | 390 | this->alarms[this->numAlarms-1].regModbusWrite = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 391 | |
brunofgc | 0:1c0a769988ee | 392 | //parametro4 |
brunofgc | 0:1c0a769988ee | 393 | pChar = strtok(NULL,"\r\n"); |
brunofgc | 0:1c0a769988ee | 394 | aux16_t = atoi(pChar); |
brunofgc | 0:1c0a769988ee | 395 | |
brunofgc | 0:1c0a769988ee | 396 | this->alarms[this->numAlarms-1].act=aux16_t; |
brunofgc | 0:1c0a769988ee | 397 | } |
brunofgc | 0:1c0a769988ee | 398 | |
brunofgc | 0:1c0a769988ee | 399 | } |
brunofgc | 0:1c0a769988ee | 400 | |
brunofgc | 0:1c0a769988ee | 401 | void device::writeReadingsToSD(){ |
brunofgc | 0:1c0a769988ee | 402 | //Esta função faz a inserção de todos os dados no arquivo armazenamento. |
brunofgc | 0:1c0a769988ee | 403 | |
brunofgc | 0:1c0a769988ee | 404 | /*float floatBuffer[2]; |
brunofgc | 0:1c0a769988ee | 405 | modBusMaster1::readFloat(9,4,1,2,floatBuffer); |
brunofgc | 0:1c0a769988ee | 406 | pc.printf("Lido na fuc problema <%f,%f>.",floatBuffer[0],floatBuffer[1]);*/ |
brunofgc | 0:1c0a769988ee | 407 | |
brunofgc | 0:1c0a769988ee | 408 | uint16_t readingIndex=0; |
brunofgc | 0:1c0a769988ee | 409 | float *floatBuffer; |
brunofgc | 0:1c0a769988ee | 410 | |
brunofgc | 0:1c0a769988ee | 411 | sdCard::insereDadosArquivo(&sdCard::armazenamento,"data{",5); |
brunofgc | 0:1c0a769988ee | 412 | for(readingIndex = 0;readingIndex < this->numReadings;readingIndex++){ |
brunofgc | 0:1c0a769988ee | 413 | switch(this->readings[readingIndex].type){ |
brunofgc | 0:1c0a769988ee | 414 | case modBusType_float: |
brunofgc | 0:1c0a769988ee | 415 | //readFloat(uint8_t,uint8_t,uint16_t,uint16_t,float*); //Endereço slave, funcCode, registrador, quantidade de registros,ponteiro para registros float |
brunofgc | 0:1c0a769988ee | 416 | floatBuffer = (float*) malloc(this->readings[readingIndex].numRegs*sizeof(float)); |
brunofgc | 0:1c0a769988ee | 417 | modBusMaster1::readFloat( |
brunofgc | 0:1c0a769988ee | 418 | this->readings[readingIndex].addr, |
brunofgc | 0:1c0a769988ee | 419 | this->readings[readingIndex].func, |
brunofgc | 0:1c0a769988ee | 420 | this->readings[readingIndex].reg, |
brunofgc | 0:1c0a769988ee | 421 | this->readings[readingIndex].numRegs, |
brunofgc | 0:1c0a769988ee | 422 | floatBuffer |
brunofgc | 0:1c0a769988ee | 423 | ); |
brunofgc | 0:1c0a769988ee | 424 | sdCard::insereDadosArquivo(&sdCard::armazenamento,(char *)floatBuffer,4*this->readings[readingIndex].numRegs); |
brunofgc | 0:1c0a769988ee | 425 | free(floatBuffer); |
brunofgc | 0:1c0a769988ee | 426 | break; |
brunofgc | 0:1c0a769988ee | 427 | } |
brunofgc | 0:1c0a769988ee | 428 | } |
brunofgc | 0:1c0a769988ee | 429 | sdCard::insereDadosArquivo(&sdCard::armazenamento,"}dataEnd;",9); |
brunofgc | 0:1c0a769988ee | 430 | } |
brunofgc | 0:1c0a769988ee | 431 | |
brunofgc | 0:1c0a769988ee | 432 | |
brunofgc | 0:1c0a769988ee | 433 | /*void device::verifyAlarms(){ |
brunofgc | 0:1c0a769988ee | 434 | |
brunofgc | 0:1c0a769988ee | 435 | }*/ |
brunofgc | 0:1c0a769988ee | 436 | |
brunofgc | 0:1c0a769988ee | 437 | device::device() |
brunofgc | 0:1c0a769988ee | 438 | { |
brunofgc | 0:1c0a769988ee | 439 | this->numAlarms=0; |
brunofgc | 0:1c0a769988ee | 440 | this->numReadings=0; |
brunofgc | 0:1c0a769988ee | 441 | } |
brunofgc | 0:1c0a769988ee | 442 | |
brunofgc | 0:1c0a769988ee | 443 | void testa_writeReadingsToSD(){ |
brunofgc | 0:1c0a769988ee | 444 | int i; |
brunofgc | 0:1c0a769988ee | 445 | for(i=0;i<devices;i++){ |
brunofgc | 0:1c0a769988ee | 446 | dispositivos[i].writeReadingsToSD(); |
brunofgc | 0:1c0a769988ee | 447 | } |
brunofgc | 0:1c0a769988ee | 448 | } |
brunofgc | 0:1c0a769988ee | 449 | |
brunofgc | 0:1c0a769988ee | 450 | int criaDevices(FILE *devicesCfg) |
brunofgc | 0:1c0a769988ee | 451 | { |
brunofgc | 0:1c0a769988ee | 452 | char linha[40]; |
brunofgc | 0:1c0a769988ee | 453 | int i; |
brunofgc | 0:1c0a769988ee | 454 | int linhas = 0; |
brunofgc | 0:1c0a769988ee | 455 | devices = 0; |
brunofgc | 0:1c0a769988ee | 456 | |
brunofgc | 0:1c0a769988ee | 457 | while(fgets(linha,maxCaractereLeLinha,devicesCfg)) { |
brunofgc | 0:1c0a769988ee | 458 | if(strstr(linha,"deviceCreate\\")) { |
brunofgc | 0:1c0a769988ee | 459 | devices++; |
brunofgc | 0:1c0a769988ee | 460 | } |
brunofgc | 0:1c0a769988ee | 461 | linhas++; |
brunofgc | 0:1c0a769988ee | 462 | } |
brunofgc | 0:1c0a769988ee | 463 | |
brunofgc | 0:1c0a769988ee | 464 | printf("Contei %u linha(s), %u device(s).\n",linhas,devices); |
brunofgc | 0:1c0a769988ee | 465 | |
brunofgc | 0:1c0a769988ee | 466 | //Criando vetor de objetos dispositivos; |
brunofgc | 0:1c0a769988ee | 467 | |
brunofgc | 0:1c0a769988ee | 468 | /*dispositivos = (device **) malloc(sizeof(device)*devices); |
brunofgc | 0:1c0a769988ee | 469 | |
brunofgc | 0:1c0a769988ee | 470 | for(i=0; i<devices; i++) { |
brunofgc | 0:1c0a769988ee | 471 | dispositivos[i] = new device(); |
brunofgc | 0:1c0a769988ee | 472 | dispositivos[i]->id=i; |
brunofgc | 0:1c0a769988ee | 473 | }*/ |
brunofgc | 0:1c0a769988ee | 474 | |
brunofgc | 0:1c0a769988ee | 475 | rewind(devicesCfg); |
brunofgc | 0:1c0a769988ee | 476 | return 1; |
brunofgc | 0:1c0a769988ee | 477 | } |
brunofgc | 0:1c0a769988ee | 478 | |
brunofgc | 0:1c0a769988ee | 479 | |
brunofgc | 0:1c0a769988ee | 480 | |
brunofgc | 0:1c0a769988ee | 481 | |
brunofgc | 0:1c0a769988ee | 482 | |
brunofgc | 0:1c0a769988ee | 483 | int configuraDevices(FILE *devicesCfg) |
brunofgc | 0:1c0a769988ee | 484 | { |
brunofgc | 0:1c0a769988ee | 485 | uint16_t linhas=0; |
brunofgc | 0:1c0a769988ee | 486 | //uint16_t leituras = 0; |
brunofgc | 0:1c0a769988ee | 487 | char linha[40]; |
brunofgc | 0:1c0a769988ee | 488 | uint8_t estadoConfiguracao=estadoConfiguracao_idle; |
brunofgc | 0:1c0a769988ee | 489 | int8_t dispositivoEmConfiguracao = -1; |
brunofgc | 0:1c0a769988ee | 490 | |
brunofgc | 0:1c0a769988ee | 491 | while(fgets(linha,maxCaractereLeLinha,devicesCfg)) { |
brunofgc | 0:1c0a769988ee | 492 | if(strstr(linha,"deviceCreate\\")) { |
brunofgc | 0:1c0a769988ee | 493 | dispositivoEmConfiguracao++; |
brunofgc | 0:1c0a769988ee | 494 | //printf("Configurando dispositivo de indice %u.\n",dispositivoEmConfiguracao); |
brunofgc | 0:1c0a769988ee | 495 | estadoConfiguracao = estadoConfiguracao_creatingDevice; |
brunofgc | 0:1c0a769988ee | 496 | } |
brunofgc | 0:1c0a769988ee | 497 | |
brunofgc | 0:1c0a769988ee | 498 | if(strstr(linha,"alarmSet")) { |
brunofgc | 0:1c0a769988ee | 499 | //printf("Criando alarme no dispositivo de indice %u.\n",dispositivoEmConfiguracao); |
brunofgc | 0:1c0a769988ee | 500 | alarmes++; |
brunofgc | 0:1c0a769988ee | 501 | estadoConfiguracao = estadoConfiguracao_alarmSet; |
brunofgc | 0:1c0a769988ee | 502 | } |
brunofgc | 0:1c0a769988ee | 503 | |
brunofgc | 0:1c0a769988ee | 504 | if(strstr(linha,"readingsSet")) { |
brunofgc | 0:1c0a769988ee | 505 | //printf("Criando leituras no dispositivo de indice %u.\n",dispositivoEmConfiguracao); |
brunofgc | 0:1c0a769988ee | 506 | estadoConfiguracao = estadoConfiguracao_readingsSet; |
brunofgc | 0:1c0a769988ee | 507 | } |
brunofgc | 0:1c0a769988ee | 508 | |
brunofgc | 0:1c0a769988ee | 509 | if(strstr(linha,"readingsEnd")) { |
brunofgc | 0:1c0a769988ee | 510 | //printf("Criando leituras no dispositivo de indice %u.\n",dispositivoEmConfiguracao); |
brunofgc | 0:1c0a769988ee | 511 | estadoConfiguracao = estadoConfiguracao_idle; |
brunofgc | 0:1c0a769988ee | 512 | } |
brunofgc | 0:1c0a769988ee | 513 | |
brunofgc | 0:1c0a769988ee | 514 | if(strstr(linha,">")) { |
brunofgc | 0:1c0a769988ee | 515 | //printf("Fechando dispositivo de indice %u.\n",dispositivoEmConfiguracao); |
brunofgc | 0:1c0a769988ee | 516 | estadoConfiguracao = estadoConfiguracao_idle; |
brunofgc | 0:1c0a769988ee | 517 | } |
brunofgc | 0:1c0a769988ee | 518 | |
brunofgc | 0:1c0a769988ee | 519 | switch(estadoConfiguracao) { |
brunofgc | 0:1c0a769988ee | 520 | case estadoConfiguracao_creatingDevice: |
brunofgc | 0:1c0a769988ee | 521 | if(strstr(linha,"id:")) { |
brunofgc | 0:1c0a769988ee | 522 | sscanf(linha,"id:%u",&dispositivos[dispositivoEmConfiguracao].id); |
brunofgc | 0:1c0a769988ee | 523 | } |
brunofgc | 0:1c0a769988ee | 524 | break; |
brunofgc | 0:1c0a769988ee | 525 | case estadoConfiguracao_alarmSet: |
brunofgc | 0:1c0a769988ee | 526 | //Inclue linha nos alarmes do dispositivo em configuração |
brunofgc | 0:1c0a769988ee | 527 | dispositivos[dispositivoEmConfiguracao].setAlarm(linha); |
brunofgc | 0:1c0a769988ee | 528 | break; |
brunofgc | 0:1c0a769988ee | 529 | case estadoConfiguracao_readingsSet: |
brunofgc | 0:1c0a769988ee | 530 | //Inclue linha nas leituras do dispositivo em configuração |
brunofgc | 0:1c0a769988ee | 531 | dispositivos[dispositivoEmConfiguracao].setReading(linha); |
brunofgc | 0:1c0a769988ee | 532 | break; |
brunofgc | 0:1c0a769988ee | 533 | } |
brunofgc | 0:1c0a769988ee | 534 | |
brunofgc | 0:1c0a769988ee | 535 | linhas++; |
brunofgc | 0:1c0a769988ee | 536 | } |
brunofgc | 0:1c0a769988ee | 537 | printf("Contei %u linha(s), configurei %u dispositivo(s), instalei %u alarme(s) nos dispositivo(s).\n",linhas,devices,alarmes); |
brunofgc | 0:1c0a769988ee | 538 | return 1; |
brunofgc | 0:1c0a769988ee | 539 | } |
brunofgc | 0:1c0a769988ee | 540 | |
brunofgc | 0:1c0a769988ee | 541 | |
brunofgc | 0:1c0a769988ee | 542 | |
brunofgc | 0:1c0a769988ee | 543 | void testaTudoDevices() |
brunofgc | 0:1c0a769988ee | 544 | { |
brunofgc | 0:1c0a769988ee | 545 | int i; |
brunofgc | 0:1c0a769988ee | 546 | int j; |
brunofgc | 0:1c0a769988ee | 547 | |
brunofgc | 0:1c0a769988ee | 548 | for(i=0; i<devices; i++) { |
brunofgc | 0:1c0a769988ee | 549 | printf("Dispositivo %u tem id %u, %u alarmes sendo eles:\n",i,dispositivos[i].id,dispositivos[i].numAlarms); |
brunofgc | 0:1c0a769988ee | 550 | |
brunofgc | 0:1c0a769988ee | 551 | for(j=0; j<dispositivos[i].numAlarms; j++) { |
brunofgc | 0:1c0a769988ee | 552 | printf("Alarme %u:\n",j); |
brunofgc | 0:1c0a769988ee | 553 | printf("\tName <%s>.\n",dispositivos[i].alarms[j].name); |
brunofgc | 0:1c0a769988ee | 554 | printf("\tSeconds <%lu>.\n",dispositivos[i].alarms[j].seconds); |
brunofgc | 0:1c0a769988ee | 555 | printf("\tAddr %u, func %u, reg %lu.\n",dispositivos[i].alarms[j].addrModbusRead,dispositivos[i].alarms[j].funcModbusRead,dispositivos[i].alarms[j].regModbusRead); |
brunofgc | 0:1c0a769988ee | 556 | if(dispositivos[i].alarms[j].type==modBusType_float) { |
brunofgc | 0:1c0a769988ee | 557 | float max,min; |
brunofgc | 0:1c0a769988ee | 558 | dispositivos[i].floatToBin(0,&max,&dispositivos[i].alarms[j].max[0]); |
brunofgc | 0:1c0a769988ee | 559 | dispositivos[i].floatToBin(0,&min,&dispositivos[i].alarms[j].min[0]); |
brunofgc | 0:1c0a769988ee | 560 | printf("\tFloat Max <%f>.\n",max); |
brunofgc | 0:1c0a769988ee | 561 | printf("\tFloat Min <%f>.\n",min); |
brunofgc | 0:1c0a769988ee | 562 | } |
brunofgc | 0:1c0a769988ee | 563 | |
brunofgc | 0:1c0a769988ee | 564 | if(dispositivos[i].alarms[j].type==modBusType_uint32_t) { |
brunofgc | 0:1c0a769988ee | 565 | uint32_t max,min; |
brunofgc | 0:1c0a769988ee | 566 | dispositivos[i].uint32_t_ToBin(0,&max,&dispositivos[i].alarms[j].max[0]); |
brunofgc | 0:1c0a769988ee | 567 | dispositivos[i].uint32_t_ToBin(0,&min,&dispositivos[i].alarms[j].min[0]); |
brunofgc | 0:1c0a769988ee | 568 | printf("\tuint32_t Max <%lu>.\n",max); |
brunofgc | 0:1c0a769988ee | 569 | printf("\tuint32_t Min <%lu>.\n",min); |
brunofgc | 0:1c0a769988ee | 570 | } |
brunofgc | 0:1c0a769988ee | 571 | |
brunofgc | 0:1c0a769988ee | 572 | if(dispositivos[i].alarms[j].type==modBusType_uint16_t) { |
brunofgc | 0:1c0a769988ee | 573 | uint16_t max,min; |
brunofgc | 0:1c0a769988ee | 574 | dispositivos[i].uint16_t_ToBin(0,&max,&dispositivos[i].alarms[j].max[0]); |
brunofgc | 0:1c0a769988ee | 575 | dispositivos[i].uint16_t_ToBin(0,&min,&dispositivos[i].alarms[j].min[0]); |
brunofgc | 0:1c0a769988ee | 576 | printf("\tuint16_t Max <%lu>.\n",max); |
brunofgc | 0:1c0a769988ee | 577 | printf("\tuint16_t Min <%lu>.\n",min); |
brunofgc | 0:1c0a769988ee | 578 | } |
brunofgc | 0:1c0a769988ee | 579 | |
brunofgc | 0:1c0a769988ee | 580 | if(dispositivos[i].alarms[j].type==modBusType_uint8_t) { |
brunofgc | 0:1c0a769988ee | 581 | uint8_t max,min; |
brunofgc | 0:1c0a769988ee | 582 | max=dispositivos[i].alarms[j].max[0]; |
brunofgc | 0:1c0a769988ee | 583 | min=dispositivos[i].alarms[j].min[0]; |
brunofgc | 0:1c0a769988ee | 584 | printf("\tuint8_t Max <%u>.\n",max); |
brunofgc | 0:1c0a769988ee | 585 | printf("\tuint8_t Min <%u>.\n",min); |
brunofgc | 0:1c0a769988ee | 586 | } |
brunofgc | 0:1c0a769988ee | 587 | |
brunofgc | 0:1c0a769988ee | 588 | if(dispositivos[i].alarms[j].type==modBusType_bit) { |
brunofgc | 0:1c0a769988ee | 589 | uint8_t max; |
brunofgc | 0:1c0a769988ee | 590 | max=dispositivos[i].alarms[j].max[0]; |
brunofgc | 0:1c0a769988ee | 591 | printf("\tbool state <%u>.\n",max); |
brunofgc | 0:1c0a769988ee | 592 | } |
brunofgc | 0:1c0a769988ee | 593 | |
brunofgc | 0:1c0a769988ee | 594 | printf("\tAct %u, Addr %u, func %u, reg %lu.\n",dispositivos[i].alarms[j].act,dispositivos[i].alarms[j].addrModbusWrite,dispositivos[i].alarms[j].funcModbusWrite,dispositivos[i].alarms[j].regModbusWrite); |
brunofgc | 0:1c0a769988ee | 595 | } |
brunofgc | 0:1c0a769988ee | 596 | |
brunofgc | 0:1c0a769988ee | 597 | printf("Dispositivo %u tem id %u, %u leituras sendo elas:\n",i,dispositivos[i].id,dispositivos[i].numReadings); |
brunofgc | 0:1c0a769988ee | 598 | |
brunofgc | 0:1c0a769988ee | 599 | for(j=0; j<dispositivos[i].numReadings; j++) { |
brunofgc | 0:1c0a769988ee | 600 | printf("Leitura %u:",j); |
brunofgc | 0:1c0a769988ee | 601 | switch(dispositivos[i].readings[j].type) { |
brunofgc | 0:1c0a769988ee | 602 | case modBusType_float: |
brunofgc | 0:1c0a769988ee | 603 | printf("Tipo float "); |
brunofgc | 0:1c0a769988ee | 604 | break; |
brunofgc | 0:1c0a769988ee | 605 | case modBusType_uint32_t: |
brunofgc | 0:1c0a769988ee | 606 | printf("Tipo uint32_t "); |
brunofgc | 0:1c0a769988ee | 607 | break; |
brunofgc | 0:1c0a769988ee | 608 | |
brunofgc | 0:1c0a769988ee | 609 | case modBusType_uint16_t: |
brunofgc | 0:1c0a769988ee | 610 | printf("Tipo uint16_t "); |
brunofgc | 0:1c0a769988ee | 611 | break; |
brunofgc | 0:1c0a769988ee | 612 | |
brunofgc | 0:1c0a769988ee | 613 | case modBusType_uint8_t: |
brunofgc | 0:1c0a769988ee | 614 | printf("Tipo uint8_t "); |
brunofgc | 0:1c0a769988ee | 615 | break; |
brunofgc | 0:1c0a769988ee | 616 | |
brunofgc | 0:1c0a769988ee | 617 | case modBusType_bit: |
brunofgc | 0:1c0a769988ee | 618 | printf("Tipo bool "); |
brunofgc | 0:1c0a769988ee | 619 | break; |
brunofgc | 0:1c0a769988ee | 620 | |
brunofgc | 0:1c0a769988ee | 621 | } |
brunofgc | 0:1c0a769988ee | 622 | |
brunofgc | 0:1c0a769988ee | 623 | printf("addr %u, func %u, reg %u, numRegs %u.\n",dispositivos[i].readings[j].addr,dispositivos[i].readings[j].func,dispositivos[i].readings[j].reg,dispositivos[i].readings[j].numRegs); |
brunofgc | 0:1c0a769988ee | 624 | } |
brunofgc | 0:1c0a769988ee | 625 | } |
brunofgc | 0:1c0a769988ee | 626 | } |