基于USB和便携式医疗设备的数据采集系统实现

引言
传统的医疗设备,特别是便携式的监护、心电、血压测量等设备均是采用标准的rs232串行接口进行数据的通信与传输,已越来越不能满足高速据传输,高数据存储以及频繁的数据采集等要求[1,2]。而usb通讯弥补了这些不足,它有着传输速度快、可靠性高、易于连接、可热插拔等许多优点。基于此,本文就介绍了一种基于usb总线接口芯片ch375实现pc机与便携式医疗设备医学信号的实时数据采集和传输的方法,并给出了相应的源程序。经测试,系统工作稳定可靠。
1 ch375芯片简介
ch375 是一个usb总线的通用接口芯片,支持usb-host主机方式和usb-device/slave 设备方式。在本地端,具有8 位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片/dsp/mcu/mpu等控制器的系统总线上。ch375 芯片内部集成了 pll 倍频器、主从 usb 接口 sie、数据缓冲区、被动并行接口、异步串行接口、命令解释器、控制传输的协议处理器、通用的固件程序等。
ch375 芯片内部具有 7 个物理端点。端点 0是默认端点,支持上传和下传,上传和下传缓冲区各是8b;端点1包括上传端点和下传端点,上传和下传缓冲区各是 8b,上传端点的端点号是81h,下传端点的端点号是 01h;端点2 包括上传端点和下传端点,上传和下传缓冲区各是 64b,上传端点的端点号是 82h,下传端点的端点号是 02h。主机端点包括输出端点和输入端点,输出和输入缓冲区各是64b,主机端点与端点2合用同一组缓冲区,主机端点的输出缓冲区就是端点2的上传缓冲区,主机端点的输入缓冲区就是端点2 的下传缓冲区。本系统就是利用批量端点2来下传数据到缓冲区,利用主机端点和端点1来上传数据到缓冲区。
ch375芯片内置了标准的usb通讯协议,这就免去了开发人员因编写通讯协议而耗费的大量时间,方便了通讯的实现。尤其是其动态链接库提供的文件级接口,更是方便了数据的读写。
2 系统硬件结构
系统的工作过程是嵌入式医疗设备即下位机(pc104)于dos状态下采集医疗信号送显示器显示,然后通过usb接口送上位机(pc主机)处理,上位机工作在windows环境下[3,4]。
系统选用带usb接口的pc104工业计算机主板,在开发过程中通过电源接口外接5v直流电源,通过显示器接口外接显示器,多功能接口外接键盘。为方便软件的更新,我们把下位机的工作程序写在优盘,外接于pc104主板的usb接口。
基于ch375芯片的系统还设计了pc104-usb转接板,并把其作为pc104主板的扩展模块通过pc104总线接口与主板相连接。转接板上有两个usb接口,任选其中一个通过 usb转接线与上位机相连即可。这样系统的硬件平台便建立起来了,系统硬件连接如图1所示。下面详细介绍系统通讯的软件实现。
图1 系统硬件结构图
3 下位机中的程序设计
usb协议规定任何传输过程都是由主机端发起并控制的,ch375在接收到主机发来的数据时产生中断,为此下位机要做的工作就是等待ch375的中断并作相应的处理。
下位机工作在dos状态,软件程序采用borlandc语言。主要工作是初始化ch375、查询中断及中断处理。相关程序代码如下:
(1)处理接收数据的中断服务程序
void interrupt usb(__cppargs)
{
unsigned char len,i;
//获取中断状态并取消中断请求
ch375writecmd(0x22);
d0=ch375readdata(); //读回状态
if((d0==0x02)||(d0==0x01)) //批量端点2接收到pc机发送的数据
{//读取数据}
inportb(0x21);
outportb(0x20,0x20); //发eoi命令,
清除中断
}
(2)写数据子程序
void ch375writedata( unsigned char dat )
{
/* 写数据口 */
outportb( portbaseaddr + 0, dat );
delayus( 1 );
}
(3)读数据子程序
unsigned char ch375readdata( void )
{
unsigned char d;
delayus( 1 );
/* 读数据口 */
d = inportb( portbaseaddr + 0 );
return( d );
}
(4)主程序
int main(int argc,char *argv[])
{
..................
for(;;) //等待
{//软件进入主循环,处理突发事件
while(kbhit()) ch=“getch”();
if(ch==27) break;
if(ch==59){。//向pc机发送数据}
if(ch==60){//写中断特征数据}
readbufusb(); //读usb接口缓冲区数据
}
..................
}
4上位机中的程序设计
因为ch375的动态链接库dll提供了许多api接口函数,所以应用程序只需通过几条简单的文件操作api函数,就可以实现与下位机的通信。
又因ch375的动态链接库dll提供了伪中断服务(实际的中断服务仍然是在驱动程序库完成的,只是在完成后向dll发个通知,再由dll再调用伪中断服务子程序),基于此,系统采用了伪中断服务来实现数据的上传,这不仅缩短了系统的开发周期,而且很好地满足了下位机的实时性要求。上传数据的程序流程图如图2所示。
数据的下传只需用简单的下传api发送数据。由ch375中断接收即可。
上位pc机工作在windows环境下,我们采用visual c++6.0语言编程。具体程序实现如下:
(1)初始化pc104-usb卡
在这里完成对设备的初始化,如ch375dll.dll文件的加载、设备的成功打开、缓冲区的清理、数据的上传模式、设置伪中断服务程序等。
图2 上传数据流程图
(1)void init_pc104-usb()
{
...................
if ( loadlibrary( “ch375dll.dll” ) == null )
{ //提示语言 }
// 使用之前必须打开设备
if ( ch375opendevice( mindex ) ==
invalid_handle_value )
{ //提示语言}
else{
m_pc104usb_ok=true;
result=ch375settimeout(mindex, 500, 500 ); // 设置usb数据读写的超时,超过500ms未完成读写将强制返回,避免一直等待下去
ch375setbufupload( mindex, 1); //启用内部缓冲上传模式并清除缓冲区中的已有数据
//设置伪中断服务程序
mpch375_int_routine ptr;
ptr=interuptprocess;
result=ch375setintroutine(mindex,ptr);
}
}
(2) 接收数据子程序
void pc_recievdata();
{ .........
// 查询内部上传缓冲区中的已有数据包个数,成功返回数据包个数,出错返回-1
long packnumber=
ch375querybufupload( mindex);
if(packnumber》0)
{
ch375readdata(mindex,&m_recev_buf, len)
}
...........
}
结论
随着嵌入式计算机在医疗设备中的广泛应用以及usb通讯技术的高速发展,本文通过usb总线接口芯片ch375、pc主机以伪中断方式发起上传数据流,以下传api发起下传数据流的通讯方式,并利用一系列的api接口函数,成功实现了上位机(pc)与下位机(pc104)之间的实时数据采集和传输。经测试系统能准确的收发数据,通讯稳定可靠。采用usb通讯,将为传统医疗设备的改造、新一代便携式医疗设备的快速开发和应用提供广阔的前景。
本文创新点:利用usb接口技术,采用usb模块ch 375在pc机与便携式医疗设备之间实现了实时数据采集和传输,而且无需编写复杂的usb驱动程序,利用其动态链接库即可实现。可以使数据采集和传输系统非常方便的从rs232通讯、串行通讯、并行通讯、转向usb通讯,弥补其速度慢的缺点,进行系统升级。
参 考 文 献
[1] 王刚。刘雅言。 usb 接口技术在便携式医疗仪器中的应用[j]。电子技术.2004,2,10-12.
[2] 苏全。梁凯琦。 usb to rs-232在传统医疗设备中的应用[j]。医疗设备信息.2005,20(6)19-20.
[3] 李新龙,翟宏范,狄国伟,王鑫,。 usb芯片ch375在电能测量仪系统中的应用[j]。 微计算机信息,2006-26:318-320.
[4] 李建。徐璧华。陈利学.windows环境下pc机与pc104的串行通讯控制[j]。西南石油学院学报.2001,23(4)68-76
[5] 杨晓鹏。宗明.visual c++ 7.0实用编程技术[m]。北京:中国水利水电出版社,2002.

农药残留检测仪怎么样
Use thermal analysis to predic
TDA86287N各引脚功能及电压资料
世仰科技发布最安静的8-bay Tower存储设备A08S-
怎样提高数字定位器的带宽
基于USB和便携式医疗设备的数据采集系统实现
为什么量子计算与AI一样重要量子计算到底是什么
利天万世20GWh锂电池项目举行开工仪式 总投资达15亿美元
台电按键加密U盘上手评测:目标明确 主打安全
这款全面屏手机仅2499,为什么热度还不如三个月前的小米6
人工智能的未来在哪里?
FPGA是如何玩转工业物联网的
可测2米全球最小的单片接近传感器在ST问世
突破基础技术 AI产业才不会变成空中阁楼
三个方面阐述了常用的无人驾驶避障方法
苹果Apple Watch 3或将于年底发布:独立支持LTE网络连接
空调自动控制系统中的PLC与DDC控制器介绍
使用单片机对瓦斯气体浓度信息检测和报警设计
科陆电子“仓促”联姻未果 腾远钴业两度上市失利
比特币的全网算力上周五超过每秒80EH达到了历史最高水平