线程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所示。