基于虛擬儀器的汽車檢測儀設計與實現
當需要暫停設備時,執行StopDeviceProAD,當需要關閉 A/D設備時,ReleaseDeviceProAD便可實現,但設備對象hDevice依然存在。ReadDeviceProAD_Half函數在半滿狀態有效時也可以單點或幾點的方式讀取A/D數據,只是到下一次半滿信號到來時的時間間隔會變得非常短,而不再是半滿間隔。
2.4 用中斷方式采集數據
用CreateDevice函數創建設備對象,同時調用CreateSystemEvent函數創建一個內核事件對象句柄hEvent賦給InitDeviceIntAD的相應參數,它將作為接收A/D半滿中斷事件的變量。啟動A/D部件,開始A/D采樣,接著調用Win32 API函數WaitForSingleObject等待hEvent中斷事件的發生,在中斷未到時,自動使所在線程進入睡眠狀態(不消耗CPU時間),反之,則立即喚醒所在線程,執行它下面的代碼,此時您便可用ReadDeviceIntAD函數讀取一批半滿長度(或半滿以下)的A/D數據,然后再接著等待FIFO的半滿中斷事件,若有效再讀取,就這樣反復讀取A/D數據即可實現連續不間斷采樣。用同樣函數可暫停和關閉A/D設備。
3 軟件編程
3.1 編程框圖
軟件總體框圖如圖3所示。
3.2 程序界面設計
虛擬式汽車檢測儀的軟件界面如圖4所示。
軟件啟動畫面有兩個大內容,分別是示波器模式和電壓表模式。示波器項可以顯示汽車各種電子部件產生的在線實時信號;電壓表項可以顯示信號的數據大小,要求輸入通道數(最大為32個)和采集頻率,左下框顯示各通道電壓波形的峰峰值和頻率。
評論