Разработчику: Чувствительность и Пороги срабатывания
Во время выполнения тестов 1-5, генерируется WAV-файл длительностью в 0,6 секунды, с синусоидальным сигналом нужной Частоты, Амплитуды и Длительности.
В тестах 1-3 генерирутся WAV-файл, с 2мя синусойдами по 0,25 сек:
Функции используемые для теста
| // ФУНКЦИИ для рисования звукового сигнала |
int __fastcall PeriodLen( int freq, int num){ // Определение длины Периода (в samples)
void __fastcall ClearWave(){ // Отчистка WAV-данных
int WINAPI MakeSinusoid( char *wav_offs, int len, float corr, char kuu)
|
| // ФУНКЦИИ для генерации WAV |
int WINAPI MakeWave() // генерирует WAV (тесты 1-3) int WINAPI MakeSWave() // генерирует WAV тестов Селективности (тесты 4-5) |
| // ФУНКЦИИ для проведения теста |
int WINAPI TestFreq(int *offs){ // Выполнение группы тестов (тесты 1-3)
int WINAPI TestLowFreq(int amp1, int amp2, int step, int rlen){ // (тесты 4-5)
int WINAPI lptThread(){ // процедура, считывающая с LPT-порта (поток #2)
int __fastcall TestInc( int *offs, int flag){ // процедура фиксирующая срабатывание
|
Во время проведения тестов 1-5, работает 2 потока:
- (1) TestFreq() - функция в цикле генерирует сигнал и подаёт его на звуковую Карту (с ожиданием окончания звучания);
- (2) lptThread() - во время ЗВУЧАНИЯ сгенерированного сигнала, эта функция считывает с LPT-порта состояние ПЗЗМ и с помощью функции TestInc() фиксирует в Журнале срабатывание каналов (ТРЕТЬЕ - для помехоустойчивости)
Последовательность обработки тестов 1-3 задаётся в следующих таблицах:
| // таблицы с параметрами для тестов 1-3 |
/* Шаг Амплитуды,
Частота, Начальная амплитуда, Максимальная Амплитуда
0 - конец списка.
*/
int FreqLList[]={150,
50,7000,25000,
0};
int FreqMList[]={100,
150,6000,28000,
250,4000,13000,
350,2500,7000,
450,1000,6000,
0};
int FreqHList[]={50,
1000,100,3000,
2000,100,3000,
3000,100,3000,
4000,100,3000,
7000,100,3000,
10000,100,3000,
0};
|
Последовательность обработки тестов 4,5 задаётся непосредственно в TestProc():
| // Вызов тестов 4,5 |
// Порог срабатывания по НЧC
xProgress = 70;
Status( cbx4, "", "", 70);
if( gStatus& NEEDTEST4 ) TestLowFreq( 12000,50000,100, 0);
xProgress = 80;
Status( cbx5, "", "", 80);
if( gStatus& NEEDTEST5 ) TestLowFreq( 6000,50000,100, 88200);
// TestLowFreq(
начальная амплитуда,
максимальная амплитуда,
шаг амплитуды,
длина синусойды на правом канале )
|