/* * File: main.c * Author: viktor * * Created on 29. brezen 2009, 15:34 */ #include #include #include /* * */ #define ERROR_SOUBOR "test.log" #define BEZNE 0 #define UVODNI 1 #define STREDNI 2 #define KONECNE 3 #define uN_0 0 #define uN_1 1 #define uN_2 2 #define uN_3 3 #define iL_0 4 #define iL_1 5 #define iL_2 6 #define Freq 7 #define analog 8 #define ELE_I_0 9 #define ELE_I_1 10 #define ELE_I_2 11 #define ELE_E_0 12 #define ELE_E_1 13 #define ELE_E_2 14 #define ELE_L_0 15 #define ELE_L_1 16 #define ELE_L_2 17 #define ELE_C_0 18 #define ELE_C_1 19 #define ELE_C_2 20 #define S_uN_0 "uN_0" #define S_uN_1 "uN_1" #define S_uN_2 "uN_2" #define S_uN_3 "uN_3" #define S_iL_0 "iL_0" #define S_iL_1 "iL_1" #define S_iL_2 "iL_2" #define S_Freq "frekv" #define S_analog "analog" #define S_ELE_I_0 "EL.I_0" #define S_ELE_I_1 "EL.I_1" #define S_ELE_I_2 "EL.I_2" #define S_ELE_E_0 "EL.E_0" #define S_ELE_E_1 "EL.E_1" #define S_ELE_E_2 "EL.E_2" #define S_ELE_L_0 "EL.L_0" #define S_ELE_L_1 "EL.L_1" #define S_ELE_L_2 "EL.L_2" #define S_ELE_C_0 "EL.C_0" #define S_ELE_C_1 "EL.C_1" #define S_ELE_C_2 "EL.C_2" int pocet_udalosti; int pocet_float; int pocet_ident; int pocet_short; int pocet_elmer; int zapis_do_souboru(int velicina, double cislo, char *datum) { FILE *f; char nazev[256]; char temp[5]; int cas; memset(temp, '\0', sizeof(temp)); memcpy(temp, &datum[11], 2); cas = atoi(temp) * 3600; memset(temp, '\0', sizeof(temp)); memcpy(temp, &datum[14], 2); cas += atoi(temp) * 60; memset(temp, '\0', sizeof(temp)); memcpy(temp, &datum[17], 2); cas += atoi(temp); switch (velicina) { case (uN_0) : sprintf(nazev, "tmp_%s_%d.m", S_uN_0, pocet_float); break; case (uN_1) : sprintf(nazev, "tmp_%s_%d.m", S_uN_1, pocet_float); break; case (uN_2) : sprintf(nazev, "tmp_%s_%d.m", S_uN_2, pocet_float); break; case (uN_3) : sprintf(nazev, "tmp_%s_%d.m", S_uN_3, pocet_float); break; case (iL_0) : sprintf(nazev, "tmp_%s_%d.m", S_iL_0, pocet_float); break; case (iL_1) : sprintf(nazev, "tmp_%s_%d.m", S_iL_1, pocet_float); break; case (iL_2) : sprintf(nazev, "tmp_%s_%d.m", S_iL_2, pocet_float); break; case (Freq) : sprintf(nazev, "tmp_%s_%d.m", S_Freq, pocet_float); break; case (analog) : sprintf(nazev, "tmp_%s_%d.m", S_analog, pocet_float); break; case (ELE_I_0) : sprintf(nazev, "tmp_%s_%d.m", S_ELE_I_0, pocet_elmer); break; case (ELE_I_1) : sprintf(nazev, "tmp_%s_%d.m", S_ELE_I_1, pocet_elmer); break; case (ELE_I_2) : sprintf(nazev, "tmp_%s_%d.m", S_ELE_I_2, pocet_elmer); break; case (ELE_E_0) : sprintf(nazev, "tmp_%s_%d.m", S_ELE_E_0, pocet_elmer); break; case (ELE_E_1) : sprintf(nazev, "tmp_%s_%d.m", S_ELE_E_1, pocet_elmer); break; case (ELE_E_2) : sprintf(nazev, "tmp_%s_%d.m", S_ELE_E_2, pocet_elmer); break; case (ELE_L_0) : sprintf(nazev, "tmp_%s_%d.m", S_ELE_L_0, pocet_elmer); break; case (ELE_L_1) : sprintf(nazev, "tmp_%s_%d.m", S_ELE_L_1, pocet_elmer); break; case (ELE_L_2) : sprintf(nazev, "tmp_%s_%d.m", S_ELE_L_2, pocet_elmer); break; case (ELE_C_0) : sprintf(nazev, "tmp_%s_%d.m", S_ELE_C_0, pocet_elmer); break; case (ELE_C_1) : sprintf(nazev, "tmp_%s_%d.m", S_ELE_C_1, pocet_elmer); break; case (ELE_C_2) : sprintf(nazev, "tmp_%s_%d.m", S_ELE_C_2, pocet_elmer); break; } if ((f = fopen(nazev, "a")) == NULL) { perror("Otevirani souboru"); return EXIT_FAILURE; } fprintf(f, "%d\t%f\n", cas, cislo); if (fclose(f) == EOF) { perror("Zavirani souboru"); return EXIT_FAILURE; } return EXIT_SUCCESS; } int zapis_chybu_vypadek(char *soubor, char *aktualni_datum) { FILE *f, *error; char temp[255]; sprintf(temp, "%s_ERROR", soubor); if ((f = fopen(temp, "a")) == NULL) { perror("Otevirani souboru"); return(EXIT_FAILURE); } if ((error = fopen(ERROR_SOUBOR, "a")) == NULL) { perror("Otevirani souboru"); return(EXIT_FAILURE); } fprintf(f, "V case %s chybi nektere promenne!\n", aktualni_datum); fprintf(error, "V souboru %s v case %s chybi nektere promenne!\n", soubor, aktualni_datum); if (fclose(error) == EOF) { perror("Zavirani souboru"); return(EXIT_FAILURE); } if (fclose(f) == EOF) { perror("Zavirani souboru"); return(EXIT_FAILURE); } return EXIT_SUCCESS; } int zapis_zmenu(char *soubor, char *aktualni_datum, char *zmena) { FILE *f, *error; char temp[255]; sprintf(temp, "%s_ERROR", soubor); if ((f = fopen(temp, "a")) == NULL) { perror("Otevirani souboru"); return(EXIT_FAILURE); } if ((error = fopen(ERROR_SOUBOR, "a")) == NULL) { perror("Otevirani souboru"); return(EXIT_FAILURE); } fprintf(f, "V case %s doslo ke zmene %s\n", aktualni_datum, zmena); fprintf(error, "V souboru %s v case %s doslo ke zmene %s\n", soubor, aktualni_datum, zmena); if (fclose(error) == EOF) { perror("Zavirani souboru"); return(EXIT_FAILURE); } if (fclose(f) == EOF) { perror("Zavirani souboru"); return(EXIT_FAILURE); } return EXIT_SUCCESS; } int zpracuj_elmer(char *soubor) { FILE *f; int c; int i; char str[512]; char aktualni_datum[256]; char temp[20]; int suma; int p8192 = 0, p8194 = 0, p8196 = 0, p8198 = 0, p8200 = 0, p8202 = 0, p8204 = 0, p8206 = 0, p8208 = 0, p8210 = 0, p8212 = 0, p8214 = 0, p8216 = 0, p8218 = 0, p8220 = 0, p8222 = 0, p8224 = 0, p8226 = 0, p8228 = 0, p8230 = 0, p8232 = 0, p8234 = 0, p8236 = 0, p8238 = 0, p8240 = 0, p8242 = 0, p8244 = 0, p8246 = 0, p8248 = 0, p8250 = 0, p8252 = 0, p8254 = 0, p8256 = 0, p8258 = 0, p8260 = 0, p8262 = 0, p8264 = 0, p8266 = 0, p8268 = 0, p8270 = 0, p8272 = 0, p8274 = 0, p8276 = 0, p8278 = 0, p8280 = 0, p8282 = 0, p8284 = 0, p8286 = 0, p8288 = 0, p8290 = 0, p8292 = 0, p8294 = 0, p8296 = 0, p8298 = 0, p8300 = 0, p8302 = 0, p8304 = 0, p8306 = 0, p8308 = 0, p8310 = 0, p8312 = 0, p8314 = 0; pocet_elmer++; memset(aktualni_datum, '\0', sizeof(aktualni_datum)); printf("Zpracovavany soubor: %s\n", soubor); if ((f = fopen(soubor, "r")) == NULL) { perror("Otevirani souboru"); return(EXIT_FAILURE); } while ((c = fgetc(f)) != EOF) { if (c == '\n') continue; memset(str, '\0', sizeof(str)); i = 0; str[i++] = c; while ((c = fgetc(f)) != '\n') { str[i++] = c; if (i > sizeof(str) - 1) { fprintf(stderr, "Nezprcovatelny radek v souboru %s.\n", soubor); exit(1); } } // Detekce radku s datumem if (strstr(str, " CEST ") != NULL) { strcpy(aktualni_datum, str); suma = p8192 + p8194 + p8196 + p8198 + p8200 + p8202 + p8204 + p8206 + p8208 + p8210 + p8212 + p8214 + p8216 + p8218 + p8220 + p8222 + p8224 + p8226 + p8228 + p8230 + p8232 + p8234 + p8236 + p8238 + p8240 + p8242 + p8244 + p8246 + p8248 + p8250 + p8252 + p8254 + p8256 + p8258 + p8260 + p8262 + p8264 + p8266 + p8268 + p8270 + p8272 + p8274 + p8276 + p8278 + p8280 + p8282 + p8284 + p8286 + p8288 + p8290 + p8292 + p8294 + p8296 + p8298 + p8300 + p8302 + p8304 + p8306 + p8308 + p8310 + p8312 + p8314; if (suma > 0) { pocet_udalosti++; zapis_chybu_vypadek(soubor, aktualni_datum); } p8192 = p8194 = p8196 = p8198 = p8200 = p8202 = p8204 = p8206 = p8208 = p8210 = p8212 = p8214 = p8216 = p8218 = p8220 = p8222 = p8224 = p8226 = p8228 = p8230 = p8232 = p8234 = p8236 = p8238 = p8240 = p8242 = p8244 = p8246 = p8248 = p8250 = p8252 = p8254 = p8256 = p8258 = p8260 = p8262 = p8264 = p8266 = p8268 = p8270 = p8272 = p8274 = p8276 = p8278 = p8280 = p8282 = p8284 = p8286 = p8288 = p8290 = p8292 = p8294 = p8296 = p8298 = p8300 = p8302 = p8304 = p8306 = p8308 = p8310 = p8312 = p8314 = 1; } // Detekce pritomnosti vsech velicin // EL.I[0] if (strstr(str, "[8192]") != NULL) { p8192 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(ELE_I_0, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[8194]") != NULL) { p8194 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(ELE_I_1, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[8196]") != NULL) { p8196 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(ELE_I_2, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } // EL.E[0] if (strstr(str, "[8198]") != NULL) { p8198 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(ELE_E_0, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[8200]") != NULL) { p8200 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(ELE_E_1, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[8202]") != NULL) { p8202 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(ELE_E_2, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } // EL.L[0] if (strstr(str, "[8204]") != NULL) { p8204 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(ELE_L_0, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[8206]") != NULL) { p8206 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(ELE_L_1, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[8208]") != NULL) { p8208 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(ELE_L_2, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } // EL.C[0] if (strstr(str, "[8210]") != NULL) { p8210 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(ELE_C_0, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[8212]") != NULL) { p8212 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(ELE_C_1, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[8214]") != NULL) { p8214 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(ELE_C_2, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[8216]") != NULL) p8216 = 0; if (strstr(str, "[8218]") != NULL) p8218 = 0; if (strstr(str, "[8220]") != NULL) p8220 = 0; if (strstr(str, "[8222]") != NULL) p8222 = 0; if (strstr(str, "[8224]") != NULL) p8224 = 0; if (strstr(str, "[8226]") != NULL) p8226 = 0; if (strstr(str, "[8228]") != NULL) p8228 = 0; if (strstr(str, "[8230]") != NULL) p8230 = 0; if (strstr(str, "[8232]") != NULL) p8232 = 0; if (strstr(str, "[8234]") != NULL) p8234 = 0; if (strstr(str, "[8236]") != NULL) p8236 = 0; if (strstr(str, "[8238]") != NULL) p8238 = 0; if (strstr(str, "[8240]") != NULL) p8240 = 0; if (strstr(str, "[8242]") != NULL) p8242 = 0; if (strstr(str, "[8244]") != NULL) p8244 = 0; if (strstr(str, "[8246]") != NULL) p8246 = 0; if (strstr(str, "[8248]") != NULL) p8248 = 0; if (strstr(str, "[8250]") != NULL) p8250 = 0; if (strstr(str, "[8252]") != NULL) p8252 = 0; if (strstr(str, "[8254]") != NULL) p8254 = 0; if (strstr(str, "[8256]") != NULL) p8256 = 0; if (strstr(str, "[8258]") != NULL) p8258 = 0; if (strstr(str, "[8260]") != NULL) p8260 = 0; if (strstr(str, "[8262]") != NULL) p8262 = 0; if (strstr(str, "[8264]") != NULL) p8264 = 0; if (strstr(str, "[8266]") != NULL) p8266 = 0; if (strstr(str, "[8268]") != NULL) p8268 = 0; if (strstr(str, "[8270]") != NULL) p8270 = 0; if (strstr(str, "[8272]") != NULL) p8272 = 0; if (strstr(str, "[8274]") != NULL) p8274 = 0; if (strstr(str, "[8276]") != NULL) p8276 = 0; if (strstr(str, "[8278]") != NULL) p8278 = 0; if (strstr(str, "[8280]") != NULL) p8280 = 0; if (strstr(str, "[8282]") != NULL) p8282 = 0; if (strstr(str, "[8284]") != NULL) p8284 = 0; if (strstr(str, "[8286]") != NULL) p8286 = 0; if (strstr(str, "[8288]") != NULL) p8288 = 0; if (strstr(str, "[8290]") != NULL) p8290 = 0; if (strstr(str, "[8292]") != NULL) p8292 = 0; if (strstr(str, "[8294]") != NULL) p8294 = 0; if (strstr(str, "[8296]") != NULL) p8296 = 0; if (strstr(str, "[8298]") != NULL) p8298 = 0; if (strstr(str, "[8300]") != NULL) p8300 = 0; if (strstr(str, "[8302]") != NULL) p8302 = 0; if (strstr(str, "[8304]") != NULL) p8304 = 0; if (strstr(str, "[8306]") != NULL) p8306 = 0; if (strstr(str, "[8308]") != NULL) p8308 = 0; if (strstr(str, "[8310]") != NULL) p8310 = 0; if (strstr(str, "[8312]") != NULL) p8312 = 0; if (strstr(str, "[8314]") != NULL) p8314 = 0; } if (fclose(f) == EOF) { perror("Zavirani souboru"); return(EXIT_FAILURE); } return(EXIT_SUCCESS); } int zpracuj_float(char *soubor) { FILE *f; int c; int i; char str[512]; char aktualni_datum[256]; char temp[20]; int suma; int p4100 = 0, p4102 = 0, p4104 = 0, p4106 = 0, p4108 = 0, p4110 = 0, p4112 = 0, p4114 = 0, p4116 = 0, p4118 = 0, p4120 = 0, p4122 = 0, p4124 = 0, p4126 = 0, p4128 = 0, p4130 = 0, p4132 = 0, p4134 = 0, p4136 = 0, p4138 = 0, p4140 = 0, p4142 = 0, p4144 = 0, p4146 = 0, p4148 = 0, p4150 = 0, p4152 = 0, p4154 = 0, p4156 = 0, p4158 = 0, p4160 = 0, p4162 = 0, p4164 = 0, p4166 = 0, p4168 = 0, p4170 = 0, p4172 = 0, p4174 = 0, p4176 = 0, p4178 = 0, p4180 = 0; pocet_float++; memset(aktualni_datum, '\0', sizeof(aktualni_datum)); printf("Zpracovavany soubor: %s\n", soubor); if ((f = fopen(soubor, "r")) == NULL) { perror("Otevirani souboru"); return(EXIT_FAILURE); } while ((c = fgetc(f)) != EOF) { if (c == '\n') continue; memset(str, '\0', sizeof(str)); i = 0; str[i++] = c; while ((c = fgetc(f)) != '\n') { str[i++] = c; if (i > sizeof(str) - 1) { fprintf(stderr, "Nezprcovatelny radek v souboru %s.\n", soubor); exit(1); } } // Detekce radku s datumem if (strstr(str, " CEST ") != NULL) { strcpy(aktualni_datum, str); suma = p4100 + p4102 + p4104 + p4106 + p4108 + p4110 + p4112 + p4114 + p4116 + p4118 + p4120 + p4122 + p4124 + p4126 + p4128 + p4130 + p4132 + p4134 + p4136 + p4138 + p4140 + p4142 + p4144 + p4146 + p4148 + p4150 + p4152 + p4154 + p4156 + p4158 + p4160 + p4162 + p4164 + p4166 + p4168 + p4170 + p4172 + p4174 + p4176 + p4178 + p4180; if (suma > 0) { pocet_udalosti++; zapis_chybu_vypadek(soubor, aktualni_datum); } p4100 = p4102 = p4104 = p4106 = p4108 = p4110 = p4112 = p4114 = p4116 = p4118 = p4120 = p4122 = p4124 = p4126 = p4128 = p4130 = p4132 = p4134 = p4136 = p4138 = p4140 = p4142 = p4144 = p4146 = p4148 = p4150 = p4152 = p4154 = p4156 = p4158 = p4160 = p4162 = p4164 = p4166 = p4168 = p4170 = p4172 = p4174 = p4176 = p4178 = p4180 = 1; } // V aktualnich datech nalezen ErrCode if (strstr(str, "[4097]") != NULL) zapis_zmenu(soubor, aktualni_datum, "- objevil se ErrCode!"); // Detekce pritomnosti vsech velicin // Frekvence if (strstr(str, "[4100]") != NULL) { p4100 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(Freq, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } // Analog if (strstr(str, "[4102]") != NULL) { p4102 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(analog, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[4104]") != NULL) p4104 = 0; if (strstr(str, "[4106]") != NULL) p4106 = 0; if (strstr(str, "[4108]") != NULL) p4108 = 0; if (strstr(str, "[4110]") != NULL) p4110 = 0; // uLN[0] if (strstr(str, "[4112]") != NULL) { p4112 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(uN_0, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[4114]") != NULL) { p4114 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(uN_1, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[4116]") != NULL) { p4116 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(uN_2, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[4118]") != NULL) { p4118 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(uN_3, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[4120]") != NULL) p4120 = 0; if (strstr(str, "[4122]") != NULL) p4122 = 0; if (strstr(str, "[4124]") != NULL) p4124 = 0; // iL[0] if (strstr(str, "[4126]") != NULL) { p4126 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(iL_0, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[4128]") != NULL) { p4128 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(iL_1, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[4130]") != NULL) { p4130 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[8], strlen(str) - 8); if (zapis_do_souboru(iL_2, atof(temp), aktualni_datum) != EXIT_SUCCESS) { perror("Zapis do docasneho souboru"); } } if (strstr(str, "[4132]") != NULL) p4132 = 0; if (strstr(str, "[4134]") != NULL) p4134 = 0; if (strstr(str, "[4136]") != NULL) p4136 = 0; if (strstr(str, "[4138]") != NULL) p4138 = 0; if (strstr(str, "[4140]") != NULL) p4140 = 0; if (strstr(str, "[4142]") != NULL) p4142 = 0; if (strstr(str, "[4144]") != NULL) p4144 = 0; if (strstr(str, "[4146]") != NULL) p4146 = 0; if (strstr(str, "[4148]") != NULL) p4148 = 0; if (strstr(str, "[4150]") != NULL) p4150 = 0; if (strstr(str, "[4152]") != NULL) p4152 = 0; if (strstr(str, "[4154]") != NULL) p4154 = 0; if (strstr(str, "[4156]") != NULL) p4156 = 0; if (strstr(str, "[4158]") != NULL) p4158 = 0; if (strstr(str, "[4160]") != NULL) p4160 = 0; if (strstr(str, "[4162]") != NULL) p4162 = 0; if (strstr(str, "[4164]") != NULL) p4164 = 0; if (strstr(str, "[4166]") != NULL) p4166 = 0; if (strstr(str, "[4168]") != NULL) p4168 = 0; if (strstr(str, "[4170]") != NULL) p4170 = 0; if (strstr(str, "[4172]") != NULL) p4172 = 0; if (strstr(str, "[4174]") != NULL) p4174 = 0; if (strstr(str, "[4176]") != NULL) p4176 = 0; if (strstr(str, "[4178]") != NULL) p4178 = 0; if (strstr(str, "[4180]") != NULL) p4180 = 0; } if (fclose(f) == EOF) { perror("Zavirani souboru"); return(EXIT_FAILURE); } return(EXIT_SUCCESS); } int zpracuj_short(char *soubor) { FILE *f; int c; int i; char str[512]; char aktualni_datum[256]; int suma; int p4096 = 0, p4098 = 0, p4100 = 0, p4102 = 0; pocet_short++; memset(aktualni_datum, '\0', sizeof(aktualni_datum)); printf("Zpracovavany soubor: %s\n", soubor); if ((f = fopen(soubor, "r")) == NULL) { perror("Otevirani souboru"); return(EXIT_FAILURE); } while ((c = fgetc(f)) != EOF) { if (c == '\n') continue; memset(str, '\0', sizeof(str)); i = 0; str[i++] = c; while ((c = fgetc(f)) != '\n') { str[i++] = c; if (i > sizeof(str) - 1) { fprintf(stderr, "Nezprcovatelny radek v souboru %s.\n", soubor); exit(1); } } // Detekce radku s datumem if (strstr(str, " CEST ") != NULL) { strcpy(aktualni_datum, str); suma = p4096 + p4098 + p4100 + p4102; if (suma > 0) { pocet_udalosti++; zapis_chybu_vypadek(soubor, aktualni_datum); } p4096 = p4098 = p4100 = p4102 = 1; } // Detekce pritomnosti vsech velicin if (strstr(str, "[4096]") != NULL) p4096 = 0; if (strstr(str, "[4098]") != NULL) p4098 = 0; if (strstr(str, "[4100]") != NULL) p4100 = 0; if (strstr(str, "[4102]") != NULL) p4102 = 0; } if (fclose(f) == EOF) { perror("Zavirani souboru"); return(EXIT_FAILURE); } return(EXIT_SUCCESS); } int zpracuj_ident(char *soubor) { FILE *f; int c; int i; char str[512]; char aktualni_datum[256]; char temp[20]; int suma; int identifikace[5] = {0, 0, 0, 0, 0}; int p512 = 0, p513 = 0, p514 = 0, p515 = 0, p516 = 0; pocet_ident++; memset(aktualni_datum, '\0', sizeof(aktualni_datum)); printf("Zpracovavany soubor: %s\n", soubor); if ((f = fopen(soubor, "r")) == NULL) { perror("Otevirani souboru"); return(EXIT_FAILURE); } while ((c = fgetc(f)) != EOF) { if (c == '\n') continue; memset(str, '\0', sizeof(str)); i = 0; str[i++] = c; while ((c = fgetc(f)) != '\n') { str[i++] = c; if (i > sizeof(str) - 1) { fprintf(stderr, "Nezprcovatelny radek v souboru %s.\n", soubor); exit(1); } } // Detekce radku s datumem if (strstr(str, " CEST ") != NULL) { strcpy(aktualni_datum, str); suma = p512 + p513 + p514 + p515 + p516; if (suma > 0) { pocet_udalosti++; zapis_chybu_vypadek(soubor, aktualni_datum); } p512 = p513 = p514 = p515 = p516; } // Detekce pritomnosti vsech velicin if (strstr(str, "[512]") != NULL) { p512 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[7], strlen(str) - 7); if (identifikace[0] != atoi(temp) && identifikace[0] != 0) { zapis_zmenu(soubor, aktualni_datum, "DEVICE_NUMBER"); pocet_udalosti++; } identifikace[0] = atoi(temp); } if (strstr(str, "[513]") != NULL) { p513 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[7], strlen(str) - 7); if (identifikace[1] != atoi(temp) && identifikace[1] != 0) { zapis_zmenu(soubor, aktualni_datum, "DEVICE_TYPE"); pocet_udalosti++; } identifikace[1] = atoi(temp); } if (strstr(str, "[514]") != NULL) { p514 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[7], strlen(str) - 7); if (identifikace[2] != atoi(temp) && identifikace[2] != 0) { zapis_zmenu(soubor, aktualni_datum, "PROPS_TYPE"); pocet_udalosti++; } identifikace[2] = atoi(temp); } if (strstr(str, "[515]") != NULL) { p515 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[7], strlen(str) - 7); if (identifikace[3] != atoi(temp) && identifikace[3] != 0) { zapis_zmenu(soubor, aktualni_datum, "SOFTWARE_VERSION"); pocet_udalosti++; } identifikace[3] = atoi(temp); } if (strstr(str, "[516]") != NULL) { p516 = 0; memset(temp, '\0', sizeof(temp)); memcpy(temp, &str[7], strlen(str) - 7); if (identifikace[4] != atoi(temp) && identifikace[4] != 0) { zapis_zmenu(soubor, aktualni_datum, "HARDWARE_VERSION"); pocet_udalosti++; } identifikace[4] = atoi(temp); } } if (fclose(f) == EOF) { perror("Zavirani souboru"); return(EXIT_FAILURE); } return(EXIT_SUCCESS); } int test_souboru(char *soubor) { FILE *f; long velikost; if ((f = fopen(soubor, "r")) == NULL) { fprintf(stderr, "Docasny soubor %s neobsahuje zadne zmerene veliciny!\n", soubor); return EXIT_FAILURE; } fseek(f, 0, SEEK_END); velikost = ftell(f); if (fclose(f) == EOF) { perror("Zavirani soubou"); return EXIT_FAILURE; } if (velikost == 0) { return EXIT_FAILURE; } return EXIT_SUCCESS; } int generuj_octave(int beh, char *promenna, char *title, int pocet_souboru, int styl, int start) { FILE *f; int i; char mod[5]; char temp[256]; int posledni = start; if (title == NULL) title = promenna; if (beh == 0) sprintf(mod, "w"); else sprintf(mod, "a"); if ((f = fopen("octave.m", mod)) == NULL) { perror("Otevirani souboru"); return EXIT_FAILURE; } if (styl == UVODNI) { if (pocet_souboru > 0) fprintf(f, "clear;\n"); for (i = 0; i < pocet_souboru; i++) { sprintf(temp, "tmp_%s_%d.m", promenna, i + 1 - start); if (test_souboru(temp) == EXIT_FAILURE) { ; } else { fprintf(f, "prom%d = load('tmp_%s_%d.m');\n", ++posledni, promenna, i + 1 - start); } } } if (styl == STREDNI) { for (i = start; i < pocet_souboru + start; i++) { sprintf(temp, "tmp_%s_%d.m", promenna, i + 1 - start); if (test_souboru(temp) == EXIT_FAILURE) { ; } else { fprintf(f, "prom%d = load('tmp_%s_%d.m');\n", ++posledni, promenna, i + 1 - start); } } } if (styl == KONECNE) { for (i = start; i < pocet_souboru + start; i++) { sprintf(temp, "tmp_%s_%d.m", promenna, i + 1 - start); if (test_souboru(temp) == EXIT_FAILURE) { ; } else { fprintf(f, "prom%d = load('tmp_%s_%d.m');\n", ++posledni, promenna, i + 1 - start); } } if (pocet_souboru > 0) { fprintf(f, "plot("); for (i = 1; i <= posledni; i++) { fprintf(f, "prom%d(:,1), prom%d(:,2)", i, i); if (i != posledni) fprintf(f, ", "); } fprintf(f, ");\n"); fprintf(f, "title('%s');\n", title); fprintf(f, "print('%s.png', '-dpng')\n", title); } } if (styl == BEZNE) { if (pocet_souboru > 0) fprintf(f, "clear;\n"); for (i = 0; i < pocet_souboru; i++) { sprintf(temp, "tmp_%s_%d.m", promenna, i + 1 - start); if (test_souboru(temp) == EXIT_FAILURE) { ; } else { fprintf(f, "prom%d = load('tmp_%s_%d.m');\n", ++posledni, promenna, i + 1); } } if (pocet_souboru > 0) { fprintf(f, "plot("); for (i = 1; i <= posledni; i++) { fprintf(f, "prom%d(:,1), prom%d(:,2)", i, i); if (i != posledni) fprintf(f, ", "); } fprintf(f, ");\n"); fprintf(f, "title('%s');\n", title); fprintf(f, "print('%s.png', '-dpng')\n", title); } } if (fclose(f) == EOF) { perror("Zavirani souboru"); return EXIT_FAILURE; } return posledni; } int main(int argc, char** argv) { int i; char temp[256]; int beh_octave = 0; pocet_udalosti = 0; pocet_float = 0; pocet_ident = 0; pocet_short = 0; pocet_elmer = 0; if (argc < 2) { printf("POUZITI:\n"); printf("%s soubor1 [soubor2 [soubor3 ...]]\n", argv[0]); printf("Je mozne pouzivat divoke karty. Napriklad:\n"); printf("%s /cesta/k/souborum/*\n", argv[0]); return EXIT_SUCCESS; } for (i = 1; i < argc; i++) { strcpy(temp, argv[i]); if (strstr(temp, "_ERROR") != NULL) { continue; // Aby se neprochazeli chybove logy } if (strstr(temp, "elmer") != NULL) { if (zpracuj_elmer(argv[i]) != EXIT_SUCCESS) { fprintf(stderr, "Pri zpracovani %s doslo k chybe!\n", argv[i]); return EXIT_FAILURE; } } if (strstr(temp, "ident") != NULL) { if (zpracuj_ident(argv[i]) != EXIT_SUCCESS) { fprintf(stderr, "Pri zpracovani %s doslo k chybe!\n", argv[i]); return EXIT_FAILURE; } } if (strstr(temp, "short") != NULL) { if (zpracuj_short(argv[i]) != EXIT_SUCCESS) { fprintf(stderr, "Pri zpracovani %s doslo k chybe!\n", argv[i]); return EXIT_FAILURE; } } if (strstr(temp, "float") != NULL) { if (zpracuj_float(argv[i]) != EXIT_SUCCESS) { fprintf(stderr, "Pri zpracovani %s doslo k chybe!\n", argv[i]); return EXIT_FAILURE; } } } if (pocet_float > 0) { i = generuj_octave(beh_octave++, S_analog, NULL, pocet_float, BEZNE, 0); i = generuj_octave(beh_octave++, S_Freq, NULL, pocet_float, BEZNE, 0); i = generuj_octave(beh_octave++, S_uN_0, "uN", pocet_float, UVODNI, 0); i = generuj_octave(beh_octave++, S_uN_1, "uN", pocet_float, STREDNI, i); i = generuj_octave(beh_octave++, S_uN_2, "uN", pocet_float, KONECNE, i); i = generuj_octave(beh_octave++, S_uN_3, "uN_3", pocet_float, BEZNE, 0); i = generuj_octave(beh_octave++, S_iL_0, "iL", pocet_float, UVODNI, 0); i = generuj_octave(beh_octave++, S_iL_1, "iL", pocet_float, STREDNI, i); i = generuj_octave(beh_octave++, S_iL_2, "iL", pocet_float, KONECNE, i); } if (pocet_elmer > 0) { i = generuj_octave(beh_octave++, S_ELE_C_0, "EL.C", pocet_elmer, UVODNI, 0); i = generuj_octave(beh_octave++, S_ELE_C_1, "EL.C", pocet_elmer, STREDNI, i); i = generuj_octave(beh_octave++, S_ELE_C_2, "EL.C", pocet_elmer, KONECNE, i); i = generuj_octave(beh_octave++, S_ELE_E_0, "EL.E", pocet_elmer, UVODNI, 0); i = generuj_octave(beh_octave++, S_ELE_E_1, "EL.E", pocet_elmer, STREDNI, i); i = generuj_octave(beh_octave++, S_ELE_E_2, "EL.E", pocet_elmer, KONECNE, i); i = generuj_octave(beh_octave++, S_ELE_I_0, "EL.I", pocet_elmer, UVODNI, 0); i = generuj_octave(beh_octave++, S_ELE_I_1, "EL.I", pocet_elmer, STREDNI, i); i = generuj_octave(beh_octave++, S_ELE_I_2, "EL.I", pocet_elmer, KONECNE, i); i = generuj_octave(beh_octave++, S_ELE_L_0, "EL.L", pocet_elmer, UVODNI, 0); i = generuj_octave(beh_octave++, S_ELE_L_1, "EL.L", pocet_elmer, STREDNI, i); i = generuj_octave(beh_octave++, S_ELE_L_2, "EL.L", pocet_elmer, KONECNE, i); } if (system("octave octave.m") != 0) { fprintf(stderr, "Spusteni Octave se nezdarilo.\n"); } if (system("rm tmp_*.m") != 0) { fprintf(stderr, "Mazani docasnych souboru se nezdarilo.\n"); } if (pocet_udalosti != 0) { printf("Nalezeno zvlastnich udalosti: %d. Podrobnosti v %s.\n", pocet_udalosti, ERROR_SOUBOR); } else { printf("Nebyla nalezena zadna zvlastni udalost.\n"); } return EXIT_SUCCESS; }