0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于下位机与上位机实现食管动力检测系统的设计

电子设计 来源:单片机与嵌入式系统应用 作者:戴祥亭 2021-04-13 17:15 次阅读

引言

消化道的动力功能是消化系统重要的生理功能,消化道的动力活动是消化和吸收的基础。近年来,由于社会竞争激烈、生活节奏加快、饮食结构变化以及人们心理、精神等因素,胃肠动力障碍性疾病(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静息压、残余压、松弛率以及吞咽时食管的收缩压力。

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

4 食管压力检查结果分析

上位机软件系统会自动测量食管不同部位在静息状态与吞咽时的压力,并实时显示给医生。对历史数据样本进行分析时,根据波形与采集时的标记,从弹出的快捷菜单中选择对应的菜单项,然后选择波形区域,系统会自动计算各种食管压力参数,以方便医生进行诊断。

4.1 食管下括约肌压力及松弛功能检测

四通道测压导管经鼻腔插入胃腔,用缓慢定点牵拉法,当压力曲线随呼吸波幅度明显增加,如压力持续升高超过胃基线2 mmHg以上时,说明测压通道已进入LES;同时点击工具栏图标,以在压力波形的相应通道上进行LES标记。选择区域后可测得LES静息压,如图6所示。

导管进入LES高压区时压力波形出现高峰,当导管位于LES腹段时,作吸气试验可看到吸气时压力升高。继续牵拉导管直至吸气时压力突然下降,此下降点即为压力反转点(PIP),表明导管已进入LES胸段。

每隔20~30 s嘱受检者做数次湿咽,以检测吞咽后的LES松弛功能,同时在相应的通道上打上湿咽(残余压)图标。选择区域后可测得LES松弛压,如图7所示。

4.2 食管体部压力测定

继续缓慢向外牵拉测压导管,使四通道导管都离开LES进入食道体部。每隔20~30 s嘱患者湿咽数次,同时在第一通道上标记湿咽图标。湿咽时,食道会发生收缩,压力波形上会升高。选择区域后可测得食管蠕动波幅,如图8所示。

4.3 食管上括约肌(UES)检测

继续缓慢向外牵拉测压导管,当压力波形出现一个增高的平台时,表明导管进入食管上括约肌,同时应在压力波形上标记UES图标。平台顶部至食管基线的压力差即为UES压力。嘱受检者干咽,压力平台会突然下降又上升,下降的最低点至食管基线的压力差即为UES松弛压。

结语

利用LabVIEW强大的仪器驱动功能,快速、高效地开发了USB驱动程序。利用LabVIEW的工具包实现了与ACCESS数据库的轻松连接。通过对人体食管压力数据样本进行分析,得到了可供辅助诊断的压力参数,满足了实际的医用需求。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5998

    文章

    43950

    浏览量

    620570
  • LabVIEW
    +关注

    关注

    1915

    文章

    3615

    浏览量

    316912
  • usb
    usb
    +关注

    关注

    59

    文章

    7413

    浏览量

    257887
收藏 人收藏

    评论

    相关推荐

    下位上位

    下位软件升级的时候,上位就会掉电,哪位有好的解决方法
    发表于 07-05 13:48

    上位通过下位启动风扇

    实际工程应用中,通过上位通过下位启动风扇,是否需要考虑风扇在中途发生故障?如果需要,上位
    发表于 06-02 21:23

    上位下位数据同步完整传输

    实现下位机先采集数据,上位发送指令给下位接收并读取后,
    发表于 08-17 17:01

    上位下位通信问题

    最近在做一个项目。上位用可以联网的笔记本,里面装有ububtu系统,打算在里面安装一个ROS(机器人操作系统);下位
    发表于 10-01 10:50

    请问如何实现上位下位的同步通信,上位PC能够监控下位系统

    已有一个蓝牙模块接stm32单片,另一蓝牙模块接PC,用什么软件实现PC接收到数据,从而监控下位
    发表于 07-30 19:37

    请问labview上位检测下位发来的信号怎么实现

    一个信号保护功能 检测下位发来的信号 当超过一定时间检测到没有发来报文 就报警 怎么实现
    发表于 02-17 10:40

    什么是上位下位

    上位上位是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等
    发表于 07-02 07:38

    怎样去实现上位下位之间的通信

    上位是什么?下位又是什么?上位下位
    发表于 09-27 07:38

    上位是如何与下位交互的

    上位是指什么?上位是如何与下位交互的?上位
    发表于 10-08 06:39

    采用上位下位的开发控制模式

    1.概述在现代测控系统中,我们经常会采用上位下位的开发控制模式。下位机主要是用来采集数据,
    发表于 12-08 06:03

    实现基于Qt的上位下位进行串口通信

    Qt实现与单片直接的通信上位+单片代码测试环境项目目标实现效果关键通信类 QSerialp
    发表于 12-08 07:26

    如何实现上位下位的相互配合呢

    1.上位下位上位,与下位对应,用来给
    发表于 01-14 08:52

    下位上位的相关资料推荐

    最近有个项目要做在线升级功能,我也是第一次做,把学习的过程总结下,希望能够帮助到其他人吧。本篇博客主要介绍两个部分,下位上位。首先说下要实现
    发表于 02-15 07:04

    上位下位概念

    最近要做一个串口通信的系统,那必然会联系到上位下位概念,那单片又是什么呢?我们一起来看一
    发表于 02-16 06:19

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

    基于LabVIEW的食管动力检测系统设计  引 言   消化道的动力功能是消化系统重要的
    发表于 12-05 11:34 782次阅读
    基于LabVIEW的<b class='flag-5'>食管</b><b class='flag-5'>动力</b><b class='flag-5'>检测</b><b class='flag-5'>系统</b>设计