基于USB的便攜式醫療設備數據采集和傳輸系統設計
下位機工作在DOS狀態(tài),軟件程序采用BORLANDC語(yǔ)言。主要工作是初始化CH375、查詢(xún)中斷及中斷處理。相關(guān)程序代碼如下:
(1)處理接收數據的中斷服務(wù)程序
void interrupt USB(__CPPARGS)
{
unsigned char len,i;
//獲取中斷狀態(tài)并取消中斷請求
CH375WriteCmd(0x22);
d0=CH375ReadData(); //讀回狀態(tài)
if((d0==0x02)||(d0==0x01)) //批量端點(diǎn)2接收到PC機發(fā)送的數據
{//讀取數據}
inportb(0x21);
outportb(0x20,0x20); //發(fā)EOI命令,
清除中斷
}
(2)寫(xiě)數據子程序
void CH375WriteData( unsigned char dat )
{
/* 寫(xiě)數據口 */
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(;;) //等待
{//軟件進(jìn)入主循環(huán),處理突發(fā)事件
while(kbhit()) ch=getch();
if(ch==27) break;
if(ch==59){.//向PC機發(fā)送數據}
if(ch==60){//寫(xiě)中斷特征數據}
}
..................
}
4上位機中的程序設計
因為CH375的動(dòng)態(tài)鏈接庫DLL提供了許多API接口函數,所以應用程序只需通過(guò)幾條簡(jiǎn)單的文件操作API函數,就可以實(shí)現與下位機的通信。
又因CH375的動(dòng)態(tài)鏈接庫DLL提供了偽中斷服務(wù)(實(shí)際的中斷服務(wù)仍然是在驅動(dòng)程序庫完成的,只是在完成后向DLL發(fā)個(gè)通知,再由DLL再調用偽中斷服務(wù)子程序),基于此,系統采用了偽中斷服務(wù)來(lái)實(shí)現數據的上傳,這不僅縮短了系統的開(kāi)發(fā)周期,而且很好地滿(mǎn)足了下位機的實(shí)時(shí)性要求。上傳數據的程序流程圖如圖2所示。
數據的下傳只需用簡(jiǎn)單的下傳API發(fā)送數據。由CH375中斷接收即可。
上位PC機工作在Windows環(huán)境下,我們采用Visual C++6.0語(yǔ)言編程。具體程序實(shí)現如下:
(1)初始化PC104-USB卡
在這里完成對設備的初始化,如CH375DLL.DLL文件的加載、設備的成功打開(kāi)、緩沖區的清理、數據的上傳模式、設置偽中斷服務(wù)程序等。
助聽(tīng)器原理相關(guān)文章:助聽(tīng)器原理
評論