Subversion Repositories svnkaklik

Compare Revisions

Ignore whitespace Rev 563 → Rev 564

/programy/C/ix86/echo/SW/sonar/src/sonar.c
175,7 → 175,7
unsigned int maxval = (1 << (snd_pcm_format_width(format) - 1)) - 1;
 
static const float f0 = 5000; //starting frequency
static const float fmax = 13000; //ending frequency
static const float fmax = 7500; //ending frequency
static const float Tw = 0.0015;
static float k;
 
314,13 → 314,14
}
else printf("Waiting for transmitt all samples\n");
//--------------
while ( snd_pcm_avail_update(capture_handle) < period_size)
 
while ( snd_pcm_avail_update(capture_handle) < period_size) // wait for one period of data
{
usleep(1000);
printf(".");
}
 
err = snd_pcm_drop(playback_handle);
err = snd_pcm_drop(playback_handle); // stop audio stream
err = snd_pcm_drain(capture_handle);
if (err < 0)
{
328,7 → 329,7
exit(EXIT_FAILURE);
}
 
err = snd_pcm_readi(capture_handle, signal, period_size);
err = snd_pcm_readi(capture_handle, signal, period_size); //read period from audio buffer
if (err < 0)
{
printf("Read error: %s\n", snd_strerror(err));
374,27 → 375,36
}
}
 
for(i=delayl[1]; i < delayl[1] + chirp_size; i++) inchirp[i-delayl[1]] = L_signal[i];
fftw_execute(fft_plan_chirp);
for(i=0; i < frequency_bins; i++) echo_spect[i] = sqrt(outchirp[i][0] * outchirp[i][0] + outchirp[i][1] * outchirp[i][1]);
 
printf("Writing output file\n");
printf("Writing output files\n");
out=fopen("/tmp/sonar.txt","w");
j=0;
for (i=0; i <= (period_size - 1); i++)
{
fprintf(out,"%6d %6d %6d %9ld %9ld\n",i,L_signal[i],R_signal[i],correlationl[i], correlationr[i]);
j+=2;
}
fclose(out);
 
out=fopen("/tmp/chirp.txt","w");
j=0;
for (i=0; i <= (chirp_size - 1); i++)
{
fprintf(out,"%6d %6d %f\n", i, chirp[i], chirp_spect[i]);
j+=2;
fprintf(out,"%6d %6d\n", i, chirp[i]);
}
fclose(out);
 
out=fopen("/tmp/echo.txt","w");
for(i=delayl[1]; i < delayl[1] + chirp_size; i++) fprintf(out,"%6d %6d\n", i-delayl[1], L_signal[i]);
fclose(out);
 
out=fopen("/tmp/spektra.txt","w");
for (i=0; i < frequency_bins; i++)
{
fprintf(out,"%4.3f %4.3f %4.3f\n", (i+0.5) * df, chirp_spect[i], echo_spect[i]);
}
fclose(out);
 
printf("Echo zacina na: %d vzorku.\n", delayl[1]);
printf("Casove na: %f s\n", ((float)delayl[1]/rate));
printf("vzdalenost: %f m\n", (SOUND_SPEED*(float)delayl[1]/rate));