/* FFT_bin.c */ /* Programme de traitement des données d'exportation des FFT bins de SpectrumLab en les convertissant au standard de gnuplot en vue d'un affichage 3D F5YG 01/01/2008 */ #include #include #include void usage (); int main ( int argc, char * argv [] ) { FILE * infile, * outfile; char cVar; char pszOutFileName [80] = "data.txt"; char time$ [11], *ptr, first_bin$ [8], delta_bin$ [6], fft_bin$ [7]; int i; double first_bin, delta_bin, fft_bin; switch ( argc ) { case 3: if ( strlen ( argv [2] ) > 63 ) { printf ( "\nFFT_bins : le nom du fichier cible ne peut excéder 63 caractères ( limitation DOS )\n" ); return 2; } /* endif */ strcpy ( pszOutFileName, argv [2] ); case 2: if ( strlen ( argv [1] ) > 63 ) { printf ( "\nFFT_bins : le nom du fichier source ne peut excéder 63 caractères ( limitation DOS)\n" ); return 3; } /* endif */ if ( argv [1][0] != '/' ) break; default: printf ( "\nProgramme de traitement des données d'exportation des FFT bins de SpectrumLab " ); printf ( "\nen les convertissant au standard de gnuplot en vue d'un affichage 3D\n" ); printf ( "\nSi aucun fichier cible n'est précisé, celui-ci sera sauvegardé comme 'data.txt'.\n" ); printf ( "\nUsage : FFT_bins [fichier cible]\n" ); return 1; } /* endswitch */ printf ( "\nFFT_bins : Conversion des données de '%s' vers '%s'\n", argv [1], pszOutFileName ); infile = fopen ( argv [1], "r" ); if ( infile == NULL ) { printf ( "\nFFT_bins : Impossible d'ouvrir le fichier source '%s'\n", argv [1] ); return 4; } /* endif */ outfile = fopen ( pszOutFileName, "w" ); if ( outfile == NULL ) { printf ( "\nFFT_bins : Impossible de créer le fichier cible '%s'\n", pszOutFileName ); return 5; } /* endif */ while ( cVar = fgetc ( infile) != -1 ) { for ( i = 0; i <= 9; ++ i ) { cVar = fgetc ( infile ); } ptr = &time$[0]; for ( i = 0; i <= 9; ++ i ) { *ptr = fgetc ( infile ); ++ ptr; } cVar = fgetc ( infile ); *ptr = 0x00; ptr = &delta_bin$[0]; for ( i = 0; i <= 4; ++ i ) { *ptr = fgetc ( infile ); ++ ptr; } cVar = fgetc ( infile ); *ptr = 0x00; ptr = &first_bin$[0]; do { *ptr = fgetc ( infile ); ++ ptr; } while (*(ptr-1) != 0x09 ); delta_bin = atof ( delta_bin$ ); first_bin = atof ( first_bin$ ); fft_bin = first_bin; while ( cVar != 0x0A ) { fprintf ( outfile, "%s\t", time$ ); fprintf ( outfile, "%.1f\t", fft_bin ); do { cVar = fgetc ( infile ); fputc ( cVar, outfile ); } while ( ( cVar != 0x09 ) && ( cVar != 0x0A ) ) ; fprintf ( outfile, "\n" ); fft_bin = fft_bin + delta_bin; } } fclose ( infile ); fclose ( outfile ); printf ( "\nFFT_bins : Conversion terminée\n" ); return 0; }