基于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.
助聽器原理相關文章:助聽器原理
評論