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