Разработчику: Чувствительность и Пороги срабатывания
Во время выполнения тестов 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( начальная амплитуда, максимальная амплитуда, шаг амплитуды, длина синусойды на правом канале ) |