基于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文件的加載、設備的成功打開、緩沖區的清理、數據的上傳模式、設置偽中斷服務程序等。
助聽器原理相關文章:助聽器原理
評論