一种图形界面下的医学信号采集方法
作者:李晓春 周京科 元秀华 杨建叔
单位:李晓春 周京科 元秀华(湖南医科大学基础学院物理教研室410078);杨建叔(湖南医科大学附属第三医院410013)
关键词:Windows;图形界面;医学信号;数据采集
中国现代医学杂志000734 该文介绍了一种Windows环境下的医学信号数据采集方法。该方法对外 部端口的操作简单易行,为建立完全真正的Windows环境下的医学信号分析系统奠定了基础 。
分类号 R197.39
本文通过对C++Builder开发工具的分析,建立了Windows环境下对端口 操作的函数,这些函数应用起来如DOS环境一样方便,这使得开发完全的Windwos环境下的分 析系统变得容易。
, http://www.100md.com
1 方法
开发环境选择Windows平台上的C++Builder系统。C++Builder是Borland公 司推出的全新的、可视的、面向对象的C++集成开发系统[5]。由于它是Windows平 台上的开发工具,也不提供对外部端口的操作函数,但它支持C、C++、Pascal等多种语言。 考虑到采集速度的需要,模数转换拟采用汇编语言。考虑到采集速度的需要,模数转换拟采 用汇编语言的直接对端口的地址进行读写的方式。通过对C++Builder系统的分析,发现其中 没有直接汇编语言的编译顺,但却内含能编嵌有汇编语言的Pascal程序的编译器(这可能与C ++Builder和Delphi程序都是Borland公司的产品有关,而Delphi能直接编译嵌有汇编语言的 Pascal程序)。为此可以利用Pascal程序中嵌入汇编语言,建立对端口地址直接操作的函数 。具体做法是:
在任何文本编器中建立如下Turbo Pscal源文件,并用文件名ad.pas保存
, 百拇医药
nit ad;
interfce
function inp(Portl:word):word
procedure outp(Prt2:Word;Value:Word);
implementation
fuction inp(portl:word):w ord;
begin
asm
push ax
push dx
, http://www.100md.com
mov dx,portl
in ax,dx
mov @ Result,ax
pop dx
pop ax
end;
end;procedure outp(port2:Wrod:Value;Vord);
begin
asm
push ax
push dx
, 百拇医药
mov ax,Vlalue
mov dx,Prot2
out dx,ax
pop ax
end
end;
end.
函数inp()实现对端口Port1的读操作。outp()实现对端口port2的写操作,写入的数字为Val ue。
在C++Builder中,新建一个工程,将ad.pas增加于该工程中,地ad.pas单独进行编译,系统 会自动地生动ad.hpp文件。在新工程的单元文件的代码编辑窗中增加#include“ad.hpp"程 序行,将ad.hpp文件增加到工程文件的单元文件中。这时就可以单元文件中任意引用inp() 、outp()函数,象DOS环境下一样方便进进行端口操作。如在C++Builder工程的主窗体中建 立一控制按钮Button1,该按钮单击联系的事件设定为启动转换卡,采集数据,则只要在单元 文件中编写如下代码即可。
, 百拇医药
void-fastacall TForml:Button1Ciock(TObect*Sender){
int a,b,c;
outp(0x308,0;∥308为通道选择口地址,选择通道)
outp(0x309,1;∥往309口地址写1,启动A/D转换卡
a=inp(0x30A)*∥读数据高8位
b=inp(0x30B)*∥读低4位
b=(b&&0xf0)/16
c=a+b;
Editl->Text=(Ansitin)c;∥结果显示在Editl的编辑框中
, 百拇医药
}
则工程运行时只要单击:Buttonl按钮,就会进行数据采集,而这一切都保护在Windows的图 形界面下,具有Windows应用程序的所有特点。
2 实例与分析
按照上述方法,作者开发了人体信号采集与分析系统。系统主界面如下图。
该系统要以方便地采集人体的指端脉搏信号、心音信号、呼吸波等,并能进行数据保存、预 处理(如滤波处理)、即时信号波形显示和信号分析。所有过程都是在Windows的图形界面方 式下进行的,界面十分友好、操作简单。“手动采集”通过人工单击按钮的方工控制采集的 开始。“自动采集”通过Windows时钟自动控制采集的时间和采样点数。不同的人体信号, 根据其特征设定不同的采集参数。采集的信号利用Windows的绘图区自动刷新显示。“采集 停止”结束信号采集。
, 百拇医药
图中显示的是人体指端脉搏信号。通过光电换能器将人体指端流量的变化的转移为电信号, 利用生物信号将人体指端流量的变化转移为电信号,利用生物信号放大器将信号放大到足够 的电压幅度,再通过A/D转换卡进行数据转移。系统采用12位16通过道PS-211A/D转移卡,转 换的控制口地址共占用主机8个连续I/O地址,具体由卡上的开关确定。不同的计算机系统保 留给外部板卡的接口地址会有不同,但保留地址一般在0x220之上。数据转换时,由Windows 事件句柄调用按上述方式定义的端口操作函数,并将卡相应地址付给Portl、Port2即可,计 算机采用586兼机,操作系统为视窗98。
本文提供的数据采集方法汇编语言的方式使采集速度较快,采集过程采用压栈、出栈的现场 保护方式,避免了Windows由于多任何可能造成的系统崩溃,增加了系统的稳定性。由于特 殊的编程方式,使得采集函数的调用如同DOS下端口函数的调用一样方便。在保证硬件配置 的情况下,采集效果良好。在Windows操作系统下可以随时启动采集各种信号,或中断采集 、进行数据的各种分析,使多路信号的采集与多路信号的综合分析及同种信号的多角度分析 统一在Windows的图形界面下。
, 百拇医药
参 考 文 献
1,谢正祥.医学信号数字处理技术及应用.重庆:科学技术文献出版社,1992:1
2,胡文蕾.传感器信号融合技术及其在生物医科检测中的应用.国外医学生物医学工 程分册,1998;21(4):228~237
3,王世元编著.C高级实用程序设计.北京:清华大学出版社,1996:1
4,黄华江.基于Windows平台的控软件设计.微型机与应用,1999;6:45~48
5,徐新华编著.C++Buildr 3编程指南.北京:人民邮电出版社,1998:1, 百拇医药
单位:李晓春 周京科 元秀华(湖南医科大学基础学院物理教研室410078);杨建叔(湖南医科大学附属第三医院410013)
关键词:Windows;图形界面;医学信号;数据采集
中国现代医学杂志000734 该文介绍了一种Windows环境下的医学信号数据采集方法。该方法对外 部端口的操作简单易行,为建立完全真正的Windows环境下的医学信号分析系统奠定了基础 。
分类号 R197.39
本文通过对C++Builder开发工具的分析,建立了Windows环境下对端口 操作的函数,这些函数应用起来如DOS环境一样方便,这使得开发完全的Windwos环境下的分 析系统变得容易。
, http://www.100md.com
1 方法
开发环境选择Windows平台上的C++Builder系统。C++Builder是Borland公 司推出的全新的、可视的、面向对象的C++集成开发系统[5]。由于它是Windows平 台上的开发工具,也不提供对外部端口的操作函数,但它支持C、C++、Pascal等多种语言。 考虑到采集速度的需要,模数转换拟采用汇编语言。考虑到采集速度的需要,模数转换拟采 用汇编语言的直接对端口的地址进行读写的方式。通过对C++Builder系统的分析,发现其中 没有直接汇编语言的编译顺,但却内含能编嵌有汇编语言的Pascal程序的编译器(这可能与C ++Builder和Delphi程序都是Borland公司的产品有关,而Delphi能直接编译嵌有汇编语言的 Pascal程序)。为此可以利用Pascal程序中嵌入汇编语言,建立对端口地址直接操作的函数 。具体做法是:
在任何文本编器中建立如下Turbo Pscal源文件,并用文件名ad.pas保存
, 百拇医药
nit ad;
interfce
function inp(Portl:word):word
procedure outp(Prt2:Word;Value:Word);
implementation
fuction inp(portl:word):w ord;
begin
asm
push ax
push dx
, http://www.100md.com
mov dx,portl
in ax,dx
mov @ Result,ax
pop dx
pop ax
end;
end;procedure outp(port2:Wrod:Value;Vord);
begin
asm
push ax
push dx
, 百拇医药
mov ax,Vlalue
mov dx,Prot2
out dx,ax
pop ax
end
end;
end.
函数inp()实现对端口Port1的读操作。outp()实现对端口port2的写操作,写入的数字为Val ue。
在C++Builder中,新建一个工程,将ad.pas增加于该工程中,地ad.pas单独进行编译,系统 会自动地生动ad.hpp文件。在新工程的单元文件的代码编辑窗中增加#include“ad.hpp"程 序行,将ad.hpp文件增加到工程文件的单元文件中。这时就可以单元文件中任意引用inp() 、outp()函数,象DOS环境下一样方便进进行端口操作。如在C++Builder工程的主窗体中建 立一控制按钮Button1,该按钮单击联系的事件设定为启动转换卡,采集数据,则只要在单元 文件中编写如下代码即可。
, 百拇医药
void-fastacall TForml:Button1Ciock(TObect*Sender){
int a,b,c;
outp(0x308,0;∥308为通道选择口地址,选择通道)
outp(0x309,1;∥往309口地址写1,启动A/D转换卡
a=inp(0x30A)*∥读数据高8位
b=inp(0x30B)*∥读低4位
b=(b&&0xf0)/16
c=a+b;
Editl->Text=(Ansitin)c;∥结果显示在Editl的编辑框中
, 百拇医药
}
则工程运行时只要单击:Buttonl按钮,就会进行数据采集,而这一切都保护在Windows的图 形界面下,具有Windows应用程序的所有特点。
2 实例与分析
按照上述方法,作者开发了人体信号采集与分析系统。系统主界面如下图。
该系统要以方便地采集人体的指端脉搏信号、心音信号、呼吸波等,并能进行数据保存、预 处理(如滤波处理)、即时信号波形显示和信号分析。所有过程都是在Windows的图形界面方 式下进行的,界面十分友好、操作简单。“手动采集”通过人工单击按钮的方工控制采集的 开始。“自动采集”通过Windows时钟自动控制采集的时间和采样点数。不同的人体信号, 根据其特征设定不同的采集参数。采集的信号利用Windows的绘图区自动刷新显示。“采集 停止”结束信号采集。
, 百拇医药
图中显示的是人体指端脉搏信号。通过光电换能器将人体指端流量的变化的转移为电信号, 利用生物信号将人体指端流量的变化转移为电信号,利用生物信号放大器将信号放大到足够 的电压幅度,再通过A/D转换卡进行数据转移。系统采用12位16通过道PS-211A/D转移卡,转 换的控制口地址共占用主机8个连续I/O地址,具体由卡上的开关确定。不同的计算机系统保 留给外部板卡的接口地址会有不同,但保留地址一般在0x220之上。数据转换时,由Windows 事件句柄调用按上述方式定义的端口操作函数,并将卡相应地址付给Portl、Port2即可,计 算机采用586兼机,操作系统为视窗98。
本文提供的数据采集方法汇编语言的方式使采集速度较快,采集过程采用压栈、出栈的现场 保护方式,避免了Windows由于多任何可能造成的系统崩溃,增加了系统的稳定性。由于特 殊的编程方式,使得采集函数的调用如同DOS下端口函数的调用一样方便。在保证硬件配置 的情况下,采集效果良好。在Windows操作系统下可以随时启动采集各种信号,或中断采集 、进行数据的各种分析,使多路信号的采集与多路信号的综合分析及同种信号的多角度分析 统一在Windows的图形界面下。
, 百拇医药
参 考 文 献
1,谢正祥.医学信号数字处理技术及应用.重庆:科学技术文献出版社,1992:1
2,胡文蕾.传感器信号融合技术及其在生物医科检测中的应用.国外医学生物医学工 程分册,1998;21(4):228~237
3,王世元编著.C高级实用程序设计.北京:清华大学出版社,1996:1
4,黄华江.基于Windows平台的控软件设计.微型机与应用,1999;6:45~48
5,徐新华编著.C++Buildr 3编程指南.北京:人民邮电出版社,1998:1, 百拇医药