/************************************************************ * 20/9/2005 modified by david fedele to read buffer-data * instead raw-data-file ************************************************************** * include needed system headers */ #include /* include standard i/o library */ #include /* include standard library */ #include /* include string library */ #include /* include unix standard library */ #include /* */ #include /* */ #include /* */ #include /* error simbol definitions */ #include /* system time definitions */ #include /* math library */ /************************************************************ * 20/9/2005 modified by david fedele */ /* void readsig_(float *sig_buf, int *error, int *fd) */ void getbytes_(int *nbytes, char *buffer, int *p, unsigned int *value); void readsig_(float *sig_buf, int *error,char *buffer, int *len,int *curpos) { int i; unsigned int word; unsigned int decimals,units; unsigned int sig_buf_temp[1024]; *error=0; /************************************************************ * 20/9/2005 modified by david fedele */ /* int nread; */ /* /\*** read the buffer ***\/ */ /* nread=read(*fd, sig_buf_temp, 2*1024); */ /* if( nread==0 ) { */ /* printf("readsig: Unexpected end of file %d at %d \n",*fd,nread); */ /* *error=1; */ /* return ; */ /* } */ /* if ( nread != 2*1024) { */ /* printf("readsig: Error on reading: nread = %d \n",nread); */ /* *error=-1; */ /* return ; */ /* } */ /* /\*** correct byte ***\/ //endianess... */ /* for(i=0; i<1024; i++) { */ /* word = sig_buf_temp[i]; */ /* sig_buf_temp[i] = ( (word&0x00ff) << 8 ) | ( (word&0xff00) >> 8 ); */ /* } */ int nbytes2=2; char *buff=buffer; if( *curpos+(2*1024)-1>*len ) { printf("readsig: Unexpected end of file \n"); *error=1; return ; } for(i=0; i<1024; i++) getbytes_(&nbytes2,buff,curpos,&sig_buf_temp[i]); /*****************************************************************/ /***interpreta*/ for(i=0; i<1024; i++) { word = sig_buf_temp[i]; units = ( (word >> 4) & 0x0fff ) ; decimals = (word & 0x000f) ; sig_buf[i] = (float)units + (float)decimals / 16.; // printf("%i %i %i %f \n",i,units,decimals,sig_buf[i]); } // for( i=0; i<1024; i++) printf("%x \n",sig_buf[i]);//??? return; }