基于USB和便携式医疗设备的数据采集系统实现
又因CH375的动态链接库DLL提供了伪中断服务(实际的中断服务仍然是在驱动程序库完成的,只是在完成后向DLL发个通知,再由DLL再调用伪中断服务子程序),基于此,系统采用了伪中断服务来实现数据的上传,这不仅缩短了系统的开发周期,而且很好地满足了下位机的实时性要求。上传数据的程序流程图如图2所示。
数据的下传只需用简单的下传API发送数据。由CH375中断接收即可。
上位PC机工作在Windows环境下,我们采用Visual C++6.0语言编程。具体程序实现如下:
(1)初始化PC104-USB卡
在这里完成对设备的初始化,如CH375DLL.DLL文件的加载、设备的成功打开、缓冲区的清理、数据的上传模式、设置伪中断服务程序等。
图2 上传数据流程图
Figure 2 procedure flowchart of uploading data
(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.
助听器原理相关文章:助听器原理
评论