#include #include #include #include #include #include #include #include #include #include #include #include #include #include char *server = "localhost"; /* server host (default=localhost) */ char *user = "root"; /* username (default=login name) */ char *password = "raspberry"; /* password (default=none) */ char *database = "adatok"; /* database name (default=none) */ MYSQL * con; /* struct buf_struct { uint8_t chamber_id; //fix 0x00 felsőbb egység állítsa be uint8_t ch_id; //jumper configurable lsb module ch0-1 select next 4 bit 16 modul select next 1 bit xy board select uint32_t inte_data; //integrated curve uint16_t peak_amp; uint16_t width; uint32_t time_sec; uint32_t time_ns; uint16_t cmp_level; uint16_t reserved; }; */ struct events { int start_ns; int end_ns; int time_sec; int length; }; void sigintHandler(int sig_num) { signal(SIGINT, sigintHandler); mysql_close(con); printf("\nExiting... \n"); exit(1); } void finish_with_error(MYSQL *con) { fprintf(stderr, "%s\n", mysql_error(con)); mysql_close(con); exit(1); } //pointerre mutató pointert kell átadni, hogy tudja módosítani az eredeti pointert void mysql_connect(MYSQL **con) { *con = mysql_init(NULL); if (*con == NULL) { fprintf(stderr, "mysql_init() failed\n"); exit(1); } printf("Mysql: Connecting to %s@%s as %s\n",database,server,user); if (mysql_real_connect(*con, server, user, password, database, 0, NULL, 0) == NULL) { finish_with_error(*con); } else printf("Mysql: Connected succesfully!\n"); } /* int mysql_write(struct buf_struct adatok) { char data[300]; printf("MySQL: Adatok beírása...\n"); snprintf(data,300,"INSERT INTO fb_55(chamber_id,ch_id,inte_data,peak_amp,width,time_sec,time_ns,cmp_lvl) VALUES(%d,%d,%d,%d,%d,%ld,%ld,%d)",adatok.chamber_id,adatok.ch_id,adatok.inte_data,adatok.peak_amp,adatok.width,adatok.time_sec,adatok.time_ns, adatok.cmp_level); mysql_query(conn,data); } */ //lekéri a megadott másodpercben történt események time_ns oszlopát növekvő sorrendbe rendezve egy tömbbe //bemenő paraméterek: array: null pointerre mutató pointer futás után egy int tömbre mutató pointer lesz használat után free vel felszabadítani!!!! // size: előzú tömb mérete lesz benne int time_ns_col_to_array(MYSQL *con, int **array, int *size, int time_sec, char * table_name) { char q_string[100]; int ret = 1; snprintf(q_string,100, "SELECT time_ns FROM`%s`WHERE time_sec=%d ORDER BY`time_ns`ASC", table_name, time_sec); if (mysql_query(con, q_string)) { finish_with_error(con); } printf("lekeres ok\n"); MYSQL_RES *result = mysql_store_result(con); if (result == NULL) { finish_with_error(con); } printf("store ok\n"); if( mysql_num_fields(result) != 1) //1 oszlopot kérek le (time_ns) { printf("oszlop nem 1\n"); //mysql_close(con); //exit(1); return -1; } MYSQL_ROW row; int i; int row_count = mysql_num_rows(result); *array = (int*) malloc(row_count * sizeof(int)); printf("realoc ok\n"); //while ((row = mysql_fetch_row(result))) for(i=0;i= min_event_length) { (*((*event_array) + event_count)).start_ns = start_ns; //kezdő elem (*((*event_array) + event_count)).end_ns = array[i]; //utolsó elemnek a még jó idejü (*((*event_array) + event_count)).time_sec = time_sec; //ebben a másodpercben volt az esemény, későbbi hazsnálatra (*((*event_array) + event_count)).length = event_length + 1; event_count++; } start_ns = array[i+1]; event_length = 0; } else event_length++; } if(event_length >= min_event_length) //utolsó lemaradt elem vizsgálata { (*((*event_array) + event_count)).start_ns = start_ns; //kezdő elem (*((*event_array) + event_count)).end_ns = array[i]; //utolsó elemnek a még jó idejü (*((*event_array) + event_count)).time_sec = time_sec; //ebben a másodpercben volt az esemény, későbbi hazsnálatra (*((*event_array) + event_count)).length = event_length + 1; event_count++; } *event_array_size = event_count; } int mysql_write_event_data_row(MYSQL *con, int row_buffer[], int id) { char data[300]; snprintf(data,300,"INSERT INTO `event_data` (chamber,sec,id,ch_id,inte_data,peak_amp,time_ns,width,cmp_lvl) VALUES(%d,%d,%d,%d,%d,%d,%d,%d,%d)", row_buffer[0], row_buffer[5], id, row_buffer[1],row_buffer[2], row_buffer[3], row_buffer[6], row_buffer[4], row_buffer[7]); if (mysql_query(con,data)) { finish_with_error(con); } } int fill_event_table(struct events *event_time_buf, int event_time_buf_size, MYSQL *con, char * table_name) { static int event_id=0; int i; char q_string[100]; int row_buff[8]; for(i=0;i=%d AND time_ns <=%d ORDER BY `ch_id` ASC" , table_name, event_time_buf[i].time_sec, event_time_buf[i].start_ns, event_time_buf[i].end_ns ); printf("data:%s",q_string); if (mysql_query(con, q_string)) { finish_with_error(con); } //printf("lekeres ok\n"); MYSQL_RES *result = mysql_store_result(con); if (result == NULL) { finish_with_error(con); } //printf("store ok\n"); if( mysql_num_fields(result) != 8) { printf("oszlop nem 8\n"); //mysql_close(con); //exit(1); return -1; } MYSQL_ROW row; if(mysql_num_rows(result) != event_time_buf[i].length) { printf("sorok szama nem egyezik meg!"); return -1; } int j,k; //while ((row = mysql_fetch_row(result))) for(j=0;j