# SVN changeset patch # User imanay # Date 2013-08-08 16:10:15.309240 # Revision 216 Get file function implemented. Index: trunk/absroot/source/absc/Control_Module/ServidorTCP.c =================================================================== diff --git a/trunk/absroot/source/absc/Control_Module/ServidorTCP.c b/trunk/absroot/source/absc/Control_Module/ServidorTCP.c --- a/trunk/absroot/source/absc/Control_Module/ServidorTCP.c (revision 215) +++ b/trunk/absroot/source/absc/Control_Module/ServidorTCP.c (revision 216) @@ -116,7 +116,9 @@ int cambia_apuntamiento(char *puntero_char); int carga_experimento(char *nombre_archivo); char *chequeo_sistema(char *filename, char *numero_muestras); -void recibe_experimento(char *data, char filename[]); +void escribe_experimento(char *data, char filename[]); +char *Lee_experimento(char *filename); +void consigue_nombre_experimento(char *rx_data, char filename[]); void SplitFrame(char *frame); void intToStr( int number, char* str ); @@ -381,11 +383,16 @@ } else{ if(strcmp(cmd,"SNDF") == 0){ - recibe_experimento(rx_data,filename1); + escribe_experimento(rx_data,filename1); carga_experimento(filename1); - cambia_apuntamiento("0"); + //cambia_apuntamiento("0"); tx_data = (char*)malloc(3); tx_data = "OK"; + } + else if(strcmp(cmd,"GETF") == 0){ + consigue_nombre_experimento(rx_data,filename1); //get a filename from frame + tx_data = Lee_experimento(filename1); //return a pointer to the content of the filename + printf("%s\n",tx_data); } else if(strcmp(cmd,"CHGB") == 0){ cambia_apuntamiento(rx_data); @@ -435,10 +442,22 @@ } + +char* Lee_experimento(char filename[]){ + char *buffer = NULL; + FILE * fd = fopen(filename,"r"); + fseek(fd, 0, SEEK_END); + size_t sz = ftell(fd); + fseek(fd, 0, SEEK_SET); + buffer = malloc(sz); + fread(buffer,sizeof(char),sz,fd); + fclose(fd); + return buffer; +} /* * Esta función genera el archivo de experimento a partir de la trama TCP recibida */ -void recibe_experimento(char *p_data, char filename[]){ +void escribe_experimento(char *p_data, char filename[]){ FILE *fd; int i = 0; @@ -452,6 +471,18 @@ fd = fopen(filename,"w"); fprintf(fd, p_data); fclose(fd); +} + +void consigue_nombre_experimento(char *p_data, char filename[]){ + + int i = 0; + + while (*p_data != '\n'){ + filename[i] = *p_data; + i++; + p_data++; + } + filename[i] = '\0'; } /* @@ -844,7 +875,8 @@ strcpy(page0,parameters.ID); strcat(page0,"\n-------\n"); - sprintf(page1,"UP:%1.2f DW:%1.2f\n",phase1, phase2); + //sprintf(page1,"UP:%1.2f DW:%1.2f\n",phase1, phase2); + sprintf(page1,"%1.2f %1.2f\n",phase1, phase2); strcat(page0,page1); char *all_pages = malloc(strlen(page0)+1); strcpy(all_pages, page0); Index: trunk/absroot/source/absc/Control_Module/configuration.txt =================================================================== diff --git a/trunk/absroot/source/absc/Control_Module/configuration.txt b/trunk/absroot/source/absc/Control_Module/configuration.txt --- a/trunk/absroot/source/absc/Control_Module/configuration.txt (revision 215) +++ b/trunk/absroot/source/absc/Control_Module/configuration.txt (revision 216) @@ -1,4 +1,4 @@ -S01 +CnMod01 parameter2 parameter3 parameter4 \ No newline at end of file