MIT-BIH心律失常心电图分析软件_毕业论文_第1页
MIT-BIH心律失常心电图分析软件_毕业论文_第2页
MIT-BIH心律失常心电图分析软件_毕业论文_第3页
MIT-BIH心律失常心电图分析软件_毕业论文_第4页
MIT-BIH心律失常心电图分析软件_毕业论文_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计说明书(论文) 作 者: 学 号: 系 : 专 业: 题 目: 指导者: (姓 名) (专业技术职务)评阅者: (姓 名) (专业技术职务) 2011 年 6 月 10 日47 / 52下载文档可编辑毕业设计(论文)中文摘要MIT-BIH心律失常心电图分析软件 摘要: MIT-BIH 心律失常数据库是目前国际上公认的可作为标准的心律失常分析数据库之一。开始执行软件,需要导入外部数据文件,同时把病例信息保存至数据库,方便以后对病例信息的管理。想要绘制波形并且显示专家标记,可以通过读取自定义格式的二进制文件,获取心电两导波形数据以及专家在特定时间点标注的标记,实现对应波形与相关专家标记的同步,以及方便用户分析两导心电波形并且与专家做的标记相比对,了解各种心律失常类型的典型波形形态。至于对心律失常类型定位,浏览波形的同时,可以选择任意一种该病例中存在的心律失常类型,根据所选择的心律失常类型发生的时间顺序依次定位,定位显示出对应的心电波形。最后如果想对病例信息后台管理,可以借助数据库,实现病例中患者信息以及心律失常类型发生次数的统计,并且实现对病例的波形回顾、查询、删除等功能。关键词: MIT-BIH 心律失常 两通道心电数据 专家诊断标记 MFC Access 毕业设计(论文)外文摘要Title MIT-BIH of Arryhthmia Database Analysis Software AbstractThe MIT-BIH Arryhthmia Database (MIT) is one of the international recognized databases as the standard arrhythmia analysis. Import the files into the software:It need import external data save the case information into the database, and it is convenient to manage of the cases.Draw the wave and the expert marks:Through reading the defined format binary files, get two guide waveforms and the expert of masks in the specific time . The user analysis with the two guide ECG waveform and the experts mark. Our analysis results compared to the expert masks. Understand all kinds of arrhythmia types of waveform .Fix the arrhythmia type: While browsing the waveform, can choose any kind of the existing arrhythmia types in the case, according to the chosen arrhythmia type occurrence of time positioning, show the corresponding ECG waveform.Manage the case informations with the help of the database: While we import the cases, can also read the case information with the help of the database manage , realize cases patients information and common arrhythmia types of happen times of statistics. And it can realize some functions,such as the review of the waveform , inquiry case, and delete case. Keywords: MIT-BIH Arryhthmia Database two-channel ambulatory excerpts marks MFC Access 目 次1 引言11.1 心电知识简介11.2 心电数据文件存储格式简介22 MIT-BIH心律失常心电图分析软件整体设计32.1 软件主要功能32.2 程序流程图33 头文件的识读53.1 头文件信息存储格式53.2 读取头文件信息64波形文件的识读84.1 绘制波形的主要技术指标84.2 读取波形数据文件94.3 绘制波形的实现过程105 专家标记文件的识读155.1 专家标记文件的读取155.2 专家标记文件的显示185.3 心律失常类型时间定位226 病例信息管理236.1 打开数据库236.2 数据管理的主要功能236.3 数据库中字段的设置267 系统测试267.1 系统测试内容277.2 测试结果27结 论29参 考 文 献30致 谢311 引言目前世界上公认的心电数据库有三个,分别是美国麻省理工学院提供的MIT-BIH心电数据库,和美国心脏学会提供的AHA以及欧洲的ST-T心电数据库。其中MIT-BIH数据库近几年应用比较广泛。为了方便研究,该数据库的所有者也将越来越多的数据放到了互联网上。该数据库中的数据是通过录制在磁带上的模拟信号通过模数(A/D)转换后的数字信号。在存储时为了减少文件长度节省空间,采用了自定义的格式,无法使用通用的方法去读取这些数据,因此在一些网站上出现了读取该文件的工具软件和库函数,使用这些工具或函数就可以获取所有的数据。但是如果每次都是用这些工具软件或者库函数,不仅会增加程序的复杂度,而且使用也不灵活。我们完全可以根据文件的格式读出数据,可以灵活的使用这些心电数据。该数据库中包含48条病历数据,每条病历均为30分钟两通道心电数据,包含全程(30分钟)专家诊断标记。MIT-BIH 数据库近年来在心电图产品认证、心电图教学等方面应用比较广泛,尤其是IEC60601-2-47、AAMI EC57等标准中明确规定使用该数据库作为设备(软件)心律失常自动分析功能的性能测试数据库。1.1 心电知识简介(1)心电图:心脏的电激动过程影响着全身各部,使体表的不同部位发生了电位差,按照心脏激动的时间顺序,将此体表电位的变化记录下来,形成一条连续曲线,即为心电图。英文为electrocardiogram,简写为ECG。在正常情况下,每次心动周期在心电图上均可出现相应的一组波形。如图1-1所示。图 1-1 一个良好的心电波形图P波 心房除极时的电位变化P-R间期 心房开始除极至心室开始除极的时间QRS波群 全部心室除极时的电位变化S-T段 心室复极时的电位变化(早期)T波 心室复极时的电位变化(晚期)Q-T间期 心室除极与复极的总时间 (2)导联的定义:将两电极置于人体的任意两点与心电图机相连,可描记出心电图,电极与心电图机链接的线路,称作心电图的导联。1.2 心电数据文件存储格式简介通过对MIT-BIH 心律失常数据库中数据的直接识读,使我们能更灵活地使用这些数据,并可以对其进行二次开发。一个完整的心电记录由三部分组成: (1)头文件.hea,以ASCII码的形式存储,文件中存储了病历中患者的基本信息、用药情况以及一些信号标准;(2)数据文件.dat,按二进制存储,每三个字节存储两个数,分别表示两导波形在某一时间点的电压值,一个数12bit,存储绘制两导波形的数据;(3)注释文件.art,按二进制存储,表示在特定时间点处专家标注的诊断标记;如图1-2所示为三个文件之间的关系:注释文件.atr数据文件.dat件.dat病例记录头文件.hea图1-2 数据库中病例记录的组成框图2 MIT-BIH心律失常心电图分析软件整体设计开发这款软件可以作为研究心律失常的一个模型软件,通过这款软件可以浏览经典的48条MIT-BIH心律失常病例的两导心电波形。通过与专家标记的比对方便我们学习了解各种常见心律失常类型的波形形态,软件负责管理指定路径中存储的心电数据和专家诊断标记,数据库系统中维护着每一条病历的相关信息,方便用户对所有数据、信息等进行查阅、维护等工作。MIT-BIH 心律失常数据库心电图显示软件运行于Windows XP/ SP2或更高版本操作系统之上,代码的编写采用C+语言,使用MFC作为程序开发框架、使用ADO组件操作Access 数据库,对48条心律失常病例进行维护管理。2.1 软件主要功能 1.导入病历:将原始病历数据导入软件(把源文件复制到软件指定的文件夹中),同时将病历的信息以及专家分析结果的统计信息保存到数据库中。2.病历管理:采用列表的方式显示已导入的病历,提供对病历及信息的查询、回顾、删除等功能。3.病历回顾:浏览心电波形、并且显示对应的专家分析诊断结果,可调整波形的走速与增益,并可通过选择心律失常类型定位到指定时间。4.设置功能:用户可对文字、波形、心电图背景格、定标信号等指定颜色。2.2 程序流程图如图2-1所示,为软件的程序流程图,描述了软件的整体执行过程。开始增加新病例病例回顾导入文件初始化获取软件的执行路径根目录的Heart文件夹中读取hea头文件添加到数据库中读到文件尾读取数据文件点击水平滚动条触发刷新设置nPos的值nPos=m_nHScrollPos nPos=m_nHScrollPos读取专家标记文件结束得到常见类型心律失常的统计信息得到病例信息显示波形显示专家标记YNNY图2-1 MIT-BIH心律失常心电图分析软件程序流程图3 头文件的识读 头文件是由一行或多行ASCII字符码组成,至少包含一个记录行,通常还包括信号技术规范行,片段技术规范行(对于多片段数据记录)和信息注释行。每条病历都对应一个头文件,头文件中包含了该条病历中患者的一些基本信息,包含患者的性别、年龄、用药情况等,以及采集信号时候的一些信号规范,比如采样频率、采集信号时的导联编号、信号电压基值等有效信息。在这款软件中根据功能方面的要求读取文件提取有效信息。将病历的部分相关信息保存至数据库以及利用提供的一些信号规范绘制波形。3.1 头文件信息存储格式记录行中从左到右依次记录了信号的名称、片段数(可选,对多片段记录,且与名称之间以“/”分隔)、信号数量、采样频率、计数频率(可选)、计数基值(可选,与计数频率配合使用且以圆括号而非空格分隔)、每信号采样数、采样开始时间(可选)、采样开始日期(可选),这些字段之间除前面指明的之外都是以空格分隔。紧跟记录行的是信号技术规范行,该行主要包含了存储信号的文件名、存储格式、ADC增益、基线值、ADC分辨率、ADC零值、信号初始值等字段。片段技术规范行主要包括记录名称和每信号的采样数两个字段,该行只有在多片段记录的头文件中才有。信息注释行一般在文件的最后,每行的开头以“#”开始,内容一般是说明患者的简单情况。下面以编号100的头文件100.hea为例说明,文件的内容如下:100 2 360 650000 0:0:0 0/0/0100.dat 212 200 l1 1024 995 -22131 0 MLII100.dat 212 200 11 1024 1011 20052 0 V5# 69 M 1085 1629 x1# Aldoment.Inderal该头文件的第一行为记录行,指出该记录为一个包含两个采样率为360HZ的信号,每一信号的长度为65万个采样点,采样开始时间和日期没有记录。后面紧跟的两行为信号技术规范说明行,从中可以看出,两个信号都包含在文件100.dat中,每一信号都是以12位的位压缩格式(即“212”格式)进行存储的,两个信号的增益都是每200ADC units/mv,ADC的分辨率为11位。ADC零值为1024,在这里基线值没有明确给出,但可以认为它等于ADC零值1024。两个信号的第一采样点的值分别为995和1011(可以看出这他们都略低于0V),65万个采样点的校验数分别为-22131和20052,输入输出可以以任何尺寸的块来执行,因为文件内容说明了这两个信号的该值都为0,信号描述字段说明了这两个信号分别采自MLII导联和V5导联。文件的最后两行包含了注释字符串,其中第一行说明了患者的性别和年龄以及记录数据,第二行列出了患者的用药情况。3.2 读取头文件信息因为每一个病历文件都是由三个基本文件组成的,一条完整的病历信息的获取需要同时读取对应的三个文件。当导入绘制波形的文件(.dat)文件的同时对该文件的后缀名做处理,比如当导入100.dat时,经过处理同时导入了100.hea和100.atr文件。具体实现方法如下代码所示:int n_dot = Dsource.Find(.);CString beforedot = Dsource.Left(n_dot); Hsource = beforedot + .hea;m_Hdest = MyApp-m_savepath + dlg.Get() + .hea;通过WinHex软件查看可以了解到48条病历中的每一个.hea文件虽然存储的内容不相同,但是在文件中存储相同信息的位置顺序是相同的。比如说文件中第一个有效数据固定表示了病历的编号,这就方便了我们对文件的读取。把读取出的有用信息依次存放入一个结构体中。方便使用并且把结构体中的数据存入数据库中。读取头文件信息的代码及部分注释信息如下所示:ReadHea(CString Path)/读头文件C;/定义一个文件类hfileCString info25;/定义一个数组,存放读取出来的病例信息int m = 0;char pbuf500;/接收读取出的字节数据CString str;CString single;CString tempinfo;memset(pbuf,0,sizeof(pbuf);/初始化字符数组if (h(m_Hdest,C) = NULL)return;/如果不能打开指定文件,就返回elseh(pbuf,sizeof(pbuf);/按字节读取文件char *hp;hp = &pbuf0;for (int k = 0;k=sizeof(pbuf);k+)if (m = 25)break;if (int)*hp = 10|(int)*hp = 13)hp+;if (*hp != &(int)*hp != 10&(int)*hp != 13)tempinfo = tempinfo + (CString)(*hp);elseinfom = tempinfo; /把读取出的信息存放到数组中tempinfo = ;m+;hp+;m_case.m_ID = info0;/把病历信息存放到结构体中m_case.m_dao0 = info12;m_case.m_dao1 = info21;m_case.m_Name = info13;if (info24 = F)m_case.m_Sex = 女; elsem_case.m_Sex = 男;m_case.m_Age = atoi(info23);h();/关闭打开的文件,否则第二次导入文件会发生内存溢出错误4 波形文件的识读MIT-BIH 数据库中的数据存储格式有Format 8、Format16、Format 80、Format 212、Format 310等8种,具体到某一数据文件的存储格式已在相应的头文件中说明,在每一种格式中都是将来自两个或多个信号采样得到的数据交替存储。在这里仅介绍心律失常数据文件应用最多的Format 212格式的存储方法。格式212是针对两个信号的数据库记录,这两个信号(为了方便起见,我们设定为信号0和信号1)的采样数据进行交替存储,每三个字节存储两个数据,这两个数据分别采样自信号0和信号1,信号0的采样数据取自第一字节对(共16位)的最低12位,信号1的采样数据由第一字节对的剩余4位(作为组成信号1采样数据的12位的高4位)和下一字节的8位(作为组成信号1采样数据的12位的低8位)共同组成。两个信号的所有数据都按照这种方法连续存储。如图4-1所示显示了100.dat的十六进制内容的一个片段。图 4-1 数据文件100.dat的十六进制显示(片段)按照“212”的存储格式,从第一字节读起,每三个字节(24位)表示两个值,第一组为“E3 33 F3”,两个值则分别为Ox3E3和0x3F3,转换为十进制分别为995和1011,代表的信号幅度分别为4.975mv(计算过程:读出的数据/信号的增益值)和5.055mv,这两个值分别是两个信号的第一个采样点,后面依此类推,分别表示了两个信号的采样值。4.1 绘制波形的主要技术指标采样频率:信号的采样率(该软件的采样频率为360HZ);走速 (走纸速度):屏幕上1mm约等于4个像素点,以标准走速25mm/s为例,每秒钟在屏幕上显示100个像素点,小于信号采集时的360个点。所以绘制波形的时候需要隔点(360/100)读取原始的采样数据用于绘制波形(25mm/s、50mm/s)。增益 (灵敏度):(5mm/mV、10mm/mV、20mm/mV)绘制波形的时候根据增益值得出波形在垂直方向上的增量。由于走速的设置要求我们隔点读取数据,在软件中标准走速为25mm/s的时候隔点数目为3.6,这就需要把存储波形数据的数组下标定义成浮点类型,把误差降低到最低。4.2 读取波形数据文件绘制波形的数据量很大,每个波形文件中每导波形存储了650000个像素数据,由于外部显示设备的宽度限制,不可能一次显示出所有波形文件,所以在软件中每次只处理足够显示一屏的数据量,这就要求我们读取波形文件的时候根据走速设置每次读取一定量的数据,借助滚动条显示下一时间段的波形时,再读取文件处理该时间段的波形数据。具体实现代码如下所示:ReadDat(CString Path)/读数据文件m_0 = 0;m_1 = 0;C;if(d(Path,C) = NULL)return;int = d();unsigned char *pbuf=(unsigned char*)malloc(*sizeof(unsigned char);int *mydata = (int*)malloc(*sizeof(int);d(pbuf,);CSyssetDlg dlg;for(float i = m_nHScrollPos*(m_set.m_v*4)*(360/(m_set.m_v*4)*3;i (m_nHScrollPos*m_set.m_v*4*(360/(m_set.m_v*4)+m_widthwave*(360/(m_set.m_v*4)*3-1 & i (); i = i+)/i表示文件中从0开始的字节的标号,每次只处理可以显示一屏的数据mydata(int)i = pbuf(int)i;/按字节读取文件for (float j = m_nHScrollPos*(m_set.m_v*4)*(360/(m_set.m_v*4)*3+1;j (m_nHScrollPos*m_set.m_v*4*(360/(m_set.m_v*4)+m_widthwave*(360/(m_set.m_v*4)*3-2& j 4;int x1 = n*256+mydata(int)j; j+;m_data1m_1 = (float)x1/200-(float)5.120;/得到第二导波形的画波数据m_1+;d();free(pbuf);free(mydata);4.3 绘制波形的实现过程实现连续波形显示,连续波形绘制主要思想是,利用MoveTo和LineTo这两个函数,当画完一个新点后,要将这个新点的坐标记录下来,作为下一次画线的起点,这样就解决了连续绘制波形。绘制波形的代码如下所示:DrawWave(CDC* pDC)/画波形CSyssetDlg dlg;CPen pen3;pen3.CreatePen(PS_COSMETIC, 2, m_set.m_wavecolor);/创建波形画笔int startx = 40;int endx = startx;int endy;int endy1;int top0 = 250-m_nVScrollPos;int top1 = 450-m_nVScrollPos;m_widthwave = 100*(int)(pDC-GetDeviceCaps(HORZRES) - 44)/100);for (float fi = 0;fi0) endy = top0 - abs(int)(m_data00*m_set.m_up*4);/得到第一道波形位置点的纵坐标值 else endy = top0 + abs(int)(m_data00*m_set.m_up*4); pDC-MoveTo(startx,endy); continue; else if (m_data0i0) endy = top0 - abs(int)(m_data0i*m_set.m_up*4); else endy = top0 + abs(int)(m_data0i*m_set.m_up*4); pDC-SelectObject(&pen3); pDC-LineTo(endx,endy); endx = endx+; endx = startx;/第一导波形输出完后把end_x的坐标设置成初始值 for (float fii = 0;fii0) endy1 = top1 - abs(int)(m_data10*m_set.m_up*4); else endy1 = top1 + abs(int)(m_data10*m_set.m_up*4); pDC-MoveTo(startx,endy1);/心电数据中的第一个点做为起点 continue; else if (m_data1ii0) endy1 = top1 - abs(int)(m_data1ii*m_set.m_up*4); else endy1 = top1 + abs(int)(m_data1ii*m_set.m_up*4); pDC-LineTo(endx,endy1); endx = endx+;图 4-2 100.dat的两导波形片段如图4-2所示的波形的采样频率为360HZ,走速为标准走速25mm/s,增益值为5mm/mV。背景格中每一个大格约为20个像素(5mm)。4.3.1 采用滚动条控制显示特定时间段的波形每一个病例信息文件都是由大量的像素点组成,由于屏幕的显示宽度是有限的,不可能一次显示出所有的波形文件,所以通过在视图中加入水平滚动条来控制波形的显示,设置滑块在水平滚动条上的位置表示波形的时间,运行程序时调节滑块的位置,可以显示不同时间段的波形。如图4-3所示为滚动条的调节过程: 设置水平滚动条的nPos的值根据nPos的值和m_v计算显示一屏波形需要读取的字节数根据m_v隔点取值绘制心电两导波形nPos的值改变图4-3 绘制波形的过程(“nPos”为滑块在水平滚动条上的位置,“m_v”为波形的走速)设置水平滚动条的代码如下所示:void CHeart_viewView:OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)/水平滚动条 int nMin = 0;int nMax = 0;GetScrollRange(SB_HORZ, &nMin, &nMax);switch(nSBCode)case SB_LEFT:m_nHScrollPos = max(m_nHScrollPos - 1, nMin);break;case SB_RIGHT:m_nHScrollPos = min(m_nHScrollPos + 1, nMax);break;case SB_LINELEFT:m_nHScrollPos = max(m_nHScrollPos - 1, nMin);break;case SB_LINERIGHT:m_nHScrollPos = min(m_nHScrollPos + 1, nMax);break;case SB_PAGELEFT:m_nHScrollPos = max(m_nHScrollPos - 1, nMin);break;case SB_PAGERIGHT:m_nHScrollPos = min(m_nHScrollPos + 1, nMax);break;case SB_THUMBTRACK:m_nHScrollPos = nPos;break;default:return; SetScrollPos(SB_HORZ,m_nHScrollPos,TRUE);Invalidate(0);CView:OnHScroll(nSBCode, nPos, pScrollBar);void CHeart_viewView:SetHScrollPos()/设置数值SCROLLINFO si;si.fMask = SIF_PAGE | SIF_RANGE | SIF_POS;si.nMin = 0;si.nPage = 1;si.nMax = 1805;si.nPos = m_nHScrollPos;SetScrollInfo(SB_HORZ,&si,TRUE); 4.3.2 解决屏幕闪烁现象滚动条可以很好的解决波形的显示,通过调节水平滑块可以方便快速的查看特定时间段的波形,但同样也带来了一个显示效果上的问题,由于大量GDI绘图,快速移动滑块的时候会造成屏幕的闪烁现象。解决这一问题采用了双缓冲技术。双缓冲技术:大量GDI绘图操作(含有擦除操作)直接输出到屏幕DC时,造成屏幕闪烁。解决办法:创建并使用后台DC进行绘制操作,然后将后台DC中的内容一次拷贝(贴图)到屏幕DC上,即双缓冲技术。相关实现代码如下图所示:MemDC = new CDC;MemBitmap = new CBitmap;MemDC-CreateCompatibleDC(pDC); CRect rc;GetClientRect(&rc);MemBitmap-CreateCompatibleBitmap(pDC,rc.Width(),rc.Height();CBitmap *pOldBit = MemDC-SelectObject(MemBitmap);MemDC-FillSolidRect(0,0,rc.Width(),rc.Height(),RGB(255,255,255);CHeart_viewDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);MemDC-SetBkMode(TRANSPARENT);MemDC-SetTextColor(m_set.m_textcolor);DrawWave(MemDC);pDC-BitBlt(0,0,rc.Width(),rc.Height(),MemDC,0,0,SRCCOPY);MemDC-DeleteDC();MemBitmap-DeleteObject();5 专家标记文件的识读注释文件记录了心电专家对相应心电信号的诊断信息,主要有两种格式:MIT格式和AHA格式。MIT格式是一种紧簇型格式,每一注释的长度占用偶数个字节的空间,多数情况下是占用两个字节,多用于在线的注释文件;而AHA格式的每一注释占用16个字节的空间,多用于交换文件的情况。在这里简要说明一下常用的MIT格式的存储方式,每一注释单元的前两个字节的第一个字节为最低有效位,16位中的最高6位表示了注释类型代码,剩余的10位说明了该注释点的发生时间或为辅助信息,若为发生时间,其值为该注释点到前一注释点的间隔(对于第一个注释点为从记录的开始到该点的间隔),若为辅助信息则说明了附加信息的长度。这两种格式的在文件中的区分决定于前两个字节的值,判断是MIT格式还是AHA格式的条件是:若文件的第一字节不为0或第二字节等于“”(0x5B)或“”(0x5D),则该文件是以MIT格式存储的,否则是按AHA格式存储的。5.1 专家标记文件的读取下面以记录100的注释文件100.atr为例进行说明,图5-1显示了100.atr的十六进制内容的一个片段。图 5-1 注释文件100.atr的十六进制显示(片段)从第一字节开始按照MIT格式进行分析,首先读出16位值0x7012,其高6位的值为0x1C(十进制28),10位的值为0x12,该类型代码为28,代表意义是节律变化,发生时间在0.05秒(18/360Hz);接着读出后面的16位值0xFC03,其高6位的值为0x3F(十进制63),低10位的值为0x03,该类型代码为63,代表的意义是在该16位值后附加了3个(低10位值代表的数)字节的辅助信息,若字节个数为奇数,则再附加一个字节的空值,在本例中就是“28 00 00 4E”;然后再从下一字节读16位值0x043B,其高6位的值为1,低10位的值为0x3B(十进制59),该类型码1代表正常心搏,发生时间为0.213秒(18+59)/360Hz);依次类推即可读出所有的注释,当读到的16位值为0时,就表示到了文件尾。当高6位为十进制59时,读取之后第3个16位的高6位,作为类型代码,读取之后第二个16位+第一个16位*216;高6位为十进制60,61,62时,继续读下一个16位。读取专家标记文件的实现过程如下所示:int *mode;int *t;int *f;int *sumt;int v = 1;int s;C;CString mask;if (fatr.Open(m_Adest,C) = NULL)return; elseint = fatr.GetLength();unsigned char *pbuf = (unsigned char*)malloc(*sizeof(unsigned char);/从脚标为0的开始存mode = (int*)malloc(*sizeof(int);t = (int*)malloc(*sizeof(int);f = (int*)malloc(*sizeof(int);sumt = (int*)malloc(*sizeof(int);fatr.Read(pbuf,);int q = 0;int u = 0;sumt0 = 0;if (pbuf0 != 0 | pbuf1 = 91 | pbuf1 = 93)for ( int k = 0;k 2;if (modev-1 0 & modev-1 = 41)int cc = (pbufk+1&3)8) + pbufk;sumtv = sumtv-1 + cc;/获取时间点信息v+;q+; k = k + 2;continue;if (modev-1 = 59)int low_8 = pbufk+2;int heigt_8 = pbufk+38;/左移8位int first = (low_8 + heigt_8)*2)16;low_8 = pbufk+4;heigt_8 = pbufk+58;int second = low_8 + heigt_8;tq = first + second;/计算时间sumtv = sumtv-1 + tq;/获取时间点信息v+;q+;k = k + 6;/需要获取时间continue; if (modev-1 = 60|modev-1 = 61|modev-1 = 62)k = k + 2;/不获取时间continue;if (modev-1 = 63)/需要计算辅助信息int dd = (pbufk+1&3)8) + pbufk;if (dd%2 != 0)k = k + dd + 3;elsek = k + dd + 2;u+;continue;s = v - 1;int i = 0;/时间定位相关memset(m_fix,0,sizeof(m_fix);for(v = 1;v = s;v+)if (modev-1 = m_fixmode & m_fixflag = 1)m_fixi = (int)(sumtv/360);m_fixi = i;/记录存在的时间点的个数i+;elsereturn;5.2 专家标记文件的显示 每一屏波形有固定的时间间隔,但是对应的每一屏标记信号并没有固定的时间间隔,也不存在发生的时间规律,但是需要与波形文件在时间上达到同步。所以在处理专家标记文件的时候采用的筛选标记的方法,在特定时间段中筛选出符合条件的标记文件,具体代码如下所示:for (v = 1;v = (m_nHScrollPos)*360 & sumtv = (maskt + m_nHScrollPos)*360)switch(modev-1)case 1: mask = N;break;case 2: mask = L;break;case 3: mask = R;break;case 4: mask = a;break;case 5: mask = V;break;case 6: mask = F;break;case 7: mask = J;break;case 8: mask = A;break;case 9: mask = S;break;case 10: mask = E;break;case 11: mask = j;break;case 12: mask = /;break;case 13: mask = Q;break;case 14: mask = ;break;case 16: mask = |;break;case 18: mask = s;break;case 19: mask = T;break;case 20: mask = *;break;case 22: mask = ;break;case 23: mask = =;break;case 24: mask = p;break;case 25: mask = B;break;case 26: mask = ;break;case 27: mask = t;break;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论