微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 医疗电子 > 基于LabVIEW的食管动力检测系统设计

基于LabVIEW的食管动力检测系统设计

时间:02-26 来源:互联网 点击:
引言

消化道的动力功能是消化系统重要的生理功能,消化道的动力活动是消化和吸收的基础。近年来,由于社会竞争激烈、生活节奏加快、饮食结构变化以及人们心理、精神等因素,胃肠动力障碍性疾病(DGIM)发病率呈上升趋势。2006年,功能性胃肠病(FGDs)的罗马III标准的问世,加深了人们对消化道动力的认识。FGDs需要排除炎症、感染、肿瘤及其他结构异常等器质性病变,并根据症状作出诊断。同样,作为FGDs中的一种,DGIM也不能用器质性疾病机理解释症状。因此,消化道动力检测作为消化道疾病其他检查方法的补充,对于研究和诊断胃肠动力障碍性疾病,有较高的临床意义。

本系统由下位机与上位机组成。下位机负责采集数据,并将其发送给上位机;上位机主要完成数据的显示、分析等工作。上位机软件采用LabVIEW 开发。 LabVIEW作为图形化编程环境的引领者,不仅直观易学、开发功能强,而且程序的可重用性高,仪器驱动功能强大,能与第三方软件轻松连接。使用 LabVIEW进行软件开发,可以充分利用计算机强大的数据处理和传输能力及LabVIEW提供的大量扩展功能库和软件工具包,大大丰富和增强了仪器的功能。

1 系统原理

本系统采用腔内压力记录法中的毛细管液压灌注法进行食管动力检测。四通道测压导管内注满蒸馏水后插入食管中,测压导管侧孔处的食管压力通过无伸缩性的水柱传至压力传感器的敏感膜片上,可测得食管4个不同位置的压力信号。该信号经放大调理后,接到下位机的模拟量输入口。由下位机的模数转换模块转换为数字量,通过USB接口传送给上位机。由上位机软件设定灌注压力,通过USB接口传送给下位机,下位机输出脉宽调制输出信号控制检测仪中的电机。系统原理框图如图 1所示。



2 下位机设计

下位机主要由凌阳公司16位单片机SPCE061A和Philips公司的USB接口芯片 PDIU/SBDl2(简称D12)组成。SPCE06lA拥有 32位可编程的多功能I/O端口和2个16位定时器/计数器,内部集成了7通道10位电压模数转换器,兼具低电压复位/监测功能。SPCE061A的模拟量输入口IOA[O~3]接检测仪4路压力信号,脉宽调制输出口IO138接检测仪的电机,SPCE061A与D12的连接如图2所示。



主程序流程如图3所示。系统初始化包括:系统时钟设置、D12初始化、D12芯片的软连接和模拟输入通道初始化。定时器TimeA的时钟源A选择4 096 Hz,定时100 ms后,打开IRQl_TMA中断。中断发生后,中断服务子程序调用D12命令层中的写缓冲区函数,将函数Get_AD()读取的4路A/D转换值写入 USB端点2。其中,函数Get_AD()先读取模拟输入通道0的A/D转换值26次,忽略最大与最小的5个值后取平均值;再依次读取下一路模拟输入通道的A/D转换值。



3 上位机软件系统的设计

采用LabVIEW8.2专业版开发软件,后台数据库采用ACC2ESS 2003。采用模块化设计方法将软件系统分为数据库操作模块、数据采集与显示模块以及数据分析模块。

3.1 数据库操作模块的设计

使用ACCESS 2003创建数据库文件patient.mdb,经过数据库需求分析,建立如下6个数据表:系统信息表、用户信息表、患者信息表、患者波形数据表、常用语词库表和解释与评议词库表。

LabVIEW访问上述的数据库文件,需要安装数据库互联工具包。数据库互联工具包通过使用ADO技术与数据库建立连接。ADO是通过Mi- crosoft OLE DB与数据库通信的。基于OLE DB的通信是通过一个类似于数据库驱动程序的Provider实现的。使用ADO将允许与任何提供了OLE DB Provider或者ODBC Driver的数据库建立连接。ODBC(Open DataBaseConnectivity)是一种传统的通用的允许与数据库建立连接的API。如果一个数据库具有ODBC驱动,则可以通过使用 “Microsoft OLE DB Provider for ODBC”(实现了从0LE DB到ODBC的转换功能)与数据库连接。

创建Microsoft Data Link文件并对UDL文件进行相应设置后,即可利用LabVIEW的数据库互联工具包中的函数实现对Access数据库的访问。

数据库操作模块包括以下几个部分:

①用户及密码管理部分,负责软件用户的登陆及密码的管理,包括用户及密码的添加、修改及删除。

②常用语词库管理部分,是为了方便医生在撰写病人病例时输入常用的病例词汇的部分。医生可以根据自己的需要添加和编辑常用的病例词汇。

③解释与评议词库管理部分,是为了方便医生撰写检查报告时输入解释与评议词汇的部分。医生可以根据自己的需要添加和编辑常用的解释与评议词汇。

④病人数据库管理部分,负责病人数据库的管理,包括病人信息的浏览、修改、删除以及病人各个时期检查波形的查看。

病人数据库管理部分用于显示病人信息的程序,如图4所示。这段代码分为3个线程。线程1具体实现的步骤如下:

①获得UDL文件的相对路径,再用DB Tools Open COnnection函数打开与这个数据库的连接。

②使用DB Tools Execute Query函数,利用SQL语句select * from PatientTable来执行SQL查询,用以选择患者信息表中的任何记录。

③使用DB Tools Fetch Recordset Data函数,将记录以二维数据库变量数组的形式输出。

④通过For循环中的Database Variant To Data函数,将二维数据库变量数组转换成字符串格式显示在多列列表框中。

线程2用于显示选项卡2中的所有控件(包括多列列表框),线程3用于插入新的菜单。



3.2 数据采集与显示模块的设计

数据采集与显示模块是医生操作检测仪的平台,主要完成食管压力数据的读取和显示、图标的标记以及数据的保存。

每100 ms下位机将食管压力数据写到USB端点2上。要正确读取USB接口的数据,涉及对USB设备的驱动。在LabVIEW环境下,可以采用传统的开发USB 驱动程序方法对D12芯片进行驱动,如先用windowsDDK开发USB驱动程序,然后用Visual C++编写DLL,最后在LabVIEW中调用DLL来操作USB设备。这里介绍一种在LabVIEW环境下使用VISA进行快速开发USB驱动程序的方法。



NI-VISA是一个用来与各种仪器总线进行通信的高级应用编程接口(API),且支持USB通信。使用VISA的驱动程序开发向导为USB设备创建并安装INF文档,只需在相应栏内输入设备的供应商ID(0X0471)、产品ID(0X0666)、制造商名称(Philips Semiconductors)和型号名称(PDILISBD12)。本设计中D12的VISA仪器描述符为 USB0::0x0471::0x0666::NI-VISA-O::RAw,在测量与自动化浏览器中可找到设备及其资源名称,并可使用VI-SA Interactive Control测试通信情况。

LabVIEW中使用VISA中的函数与USB设备进行通信。图5为从USB设备端点2中读取指定字节数的程序代码。具体实现过程如下:

①在前面板的“VISA资源名称控件”中输入VISA资源名称字符串(即上述的VISA仪器描述符),用来指定要连接的USB设备。

②用VISAOPEN函数打开VISA资源名称控件所指定的设备。

③用USB Raw的属性节点USB Settings:Bulk-InPipe,将端点2设置为批量输入端点。

④用VISARead函数从USB端点2中读取16字节的数据。

用波形图表控件显示读取的USB端点数据,即可实现食管压力数据的显示。

在采集过程中,应根据需要在波形图表上设置基线和标记图标。例如,当确定测压导管所有通道均插入胃中,应点击工具栏相应图标设置胃基线;当确定导管处于食管下括约肌中时,应点击工具栏相应图标进行标记。这些图标都会标记在波形图表上,以便今后的计算和分析。采集过程中,还应将食管压力数据以及图标标记的时间和种类分别保存到二进制文件中,最后将文件作为oLE对象保存到数据库中。

3.3 数据分析模块的设计

数据分析模块主要负责分析患者食管压力数据,并完成对患者压力数据的辅助诊断。

首先需要将数据采集过程中进行过标记操作的食管压力数据波形图绘制出来。由于要显示波形图以及各种直线、图像、文字,波形图控件已不能实现这些功能,故使用图片控件进行显示的工作。可使用绘制波形图函数将保存在数据库中相应的食管压力数据绘制在图片中。利用读取BMP文件函数、还原像素图函数和绘制还原像素图函数,可以在图片控件对应区域绘制正确的标志图像。

对图像进行操作时还需进行防闪烁的处理。通常情况下,在图片中重新绘制图形或拖动滚动条时,LabVIEW将通过擦除对象的内容并重绘新数据的方式来更新某个对象,但这样会导致可觉察的闪烁。通过设置图片控件快捷菜单中的平滑更新属性,LabVIEW会自动利用幕后缓冲区来最大限度地抑制擦除和重绘所引起的闪烁。食管压力数据的波形图绘制完后,根据在数据采集时所作的标记选择相应的区域,系统会自动计算各种功能参数,如LES静息压、残余压、松弛率以及吞咽时食管的收缩压力。

分析结果会以报告的形式反馈给医生,并且会被重新保存到数据库中。最后,分析结果以报表形式输出。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top