Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
14
Добавлен:
16.04.2013
Размер:
2.17 Mб
Скачать

Реализация таймера.

При успешной загрузке данных из файла устанавливается системный таймер с временем срабатывания (в миллисекундах), равным 2. Таймеры являются лимитированным глобальным ресурсом системы, поэтому следует проверять код, возвращаемый функцией SetTimer. После установки таймера каждые 2 миллисекунды система будет посылать в очередь сообщений нашего приложения сообщение WM_TIMER. Значение третьего параметра NULL говорит о том, что сообщение будет обрабатываться в оконном классе, а не в специально созданной глобальной функции, адрес которой следовало бы передать третьим параметром. При возникновении прерывания от таймера управление будет передано в функцию OnTimer.

void CNewvisualDlg::OnTimer(UINT nIDEvent)

{

if(Flag == true)

{

if(m_dlgPaint.NPoints == 500)

m_dlgPaint.NPoints = (m_dlgPaint.x2 - m_dlgPaint.x1);

else

{

m_dlgPaint.NPoints+=(m_dlgPaint.x2 - m_dlgPaint.x1);

m_dlgPaint.PointCounter+=(m_dlgPaint.x2 - m_dlgPaint.x1);

}

m_dlgPaint.rect.left = m_dlgPaint.x1-5;

m_dlgPaint.rect.right = m_dlgPaint.x1;

m_dlgPaint.rect.top = m_dlgPaint.y1;

m_dlgPaint.rect.bottom = m_dlgPaint.y2+10;

CRect rect2;rect2.CopyRect(&m_dlgPaint.rect);

rect2.SetRect(0,0,(m_dlgPaint.rect.right-1),

m_dlgPaint.rect.bottom);

m_dlgPaint.InvalidateRect(&rect2);

}

if(m_dlgPaint.rect.right >= m_dlgPaint.x2) Flag = true;

if(m_dlgPaint.Counter < m_dlgPaint.NPoints)

{

m_dlgPaint.Counter+=5;

m_dlgPaint.rect.left+=5;

m_dlgPaint.rect.right+=5;

Flag=false;

}

else Flag = true;

if(m_dlgPaint.NPoints>=8000)

{

Flag = true;

m_dlgPaint.NPoints= 500;

m_dlgPaint.Counter = 0;

m_dlgPaint.PointCounter = 0;

}

m_dlgPaint.InvalidateRect(&m_dlgPaint.rect);

CDialog::OnTimer(nIDEvent);

}

Реализация qrs детектора.

Интеграция в проект QRS детектора была осуществлена при помощи руководителя практики, заголовочный файл и файл реализации были подключены к проекту. Графическая реализация была целиком самостоятельной работой. Для отображения заметок определения QRS, в функцию, рисующую график добавляется параметр (массив из 8000 элементов)

//код заполнения массива для

//последующего отображения в окне просмотра

if(m_dlgPaint.StartOtv[0] == 0) return;

INT disp,amp;

memset(m_dlgPaint.DifFlag,0,8000);

for(i=0;i<8000;i++)

if(CalcPoint(m_dlgPaint.StartOtvFilt[i],&disp,&amp))

{

m_dlgPaint.DifFlag[i-disp] = 1;

}

Соседние файлы в папке Диплом Fisher (отл)