- 相關(guān)推薦
基于USB和多線程的實時數(shù)據(jù)采集系統(tǒng)
對于廣大用戶而言,與系統(tǒng)的交互是通過應(yīng)用程序?qū)崿F(xiàn),而且整個實時采集系統(tǒng)的主要數(shù)據(jù)處理都是在這里完成的。因此,運行效率高、界面友好、具有強大數(shù)據(jù)分析和處理的應(yīng)用程序的設(shè)計,也是系統(tǒng)設(shè)計上一個不容忽視的關(guān)鍵因素。應(yīng)用程序的主要功能有:啟動/關(guān)閉USB設(shè)備,檢測USB設(shè)備,設(shè)置USB數(shù)據(jù)傳輸管道/端口,設(shè)置A/D,采集數(shù)據(jù),顯示/分析數(shù)據(jù)。這里,我們采用VisualC++6.0作為程序的開發(fā)環(huán)境,并且充分運用了多線程的編程思想。在這個設(shè)備中,設(shè)置4個線程:首先是1個主線程,負(fù)責(zé)用戶界面,并保持中樞地位。它的生存周期也就是整個用戶程序的主存期,用戶的動作(例如鼠標(biāo)事件、鍵盤事件)都會觸發(fā)主線程的消息機制,從而完成對用戶的響應(yīng);而3個分離的輔助線程分別負(fù)責(zé)數(shù)據(jù)的采集、數(shù)據(jù)的分析處理以及數(shù)據(jù)的顯示這3個不同的任務(wù)。輔助線程是在主線程運行過程中產(chǎn)生的,它的生命就是線程函數(shù)本身,函數(shù)一旦return,線程就結(jié)束了。因此,輔助線程的生存周期只是整個程序生存期的一部分。
MFC程序只會有一個CwinApp對象,而CwinApp派生自CwinThread,即產(chǎn)生了應(yīng)用程序的主線程。每當(dāng)需要一個額外的線程時,應(yīng)先產(chǎn)生一個CwinThread對象,再調(diào)用全局函數(shù)AfxBeginThread(),將線程產(chǎn)生出來。
對于輔助線程(workerthread),要為它準(zhǔn)備一個線程函數(shù),然后調(diào)用AfxBeginThread()。例如:CWinThread*pThread=AfxBeginThread(ThreadFunc,¶m);
UINTThreadFunc(LPVOIDpParam);//線程函數(shù)
對于用戶界面線程(UIthread),不能夠光由一個線程函數(shù)來代表,因為它要處理消息,它需要一個消息循環(huán)。應(yīng)該先從CWinThread派生一個自己的類,再調(diào)用AfxBeginThread()產(chǎn)生一個CWinThread對象。網(wǎng)站m.htc668.com
結(jié)語
基于USB技術(shù)的實時數(shù)據(jù)采集系統(tǒng),在編程上運用了多線程思想;從硬件和軟件兩方面錄求較佳的解決途徑,并將二者結(jié)合起來,在實際中取得了良好的運行效果。
【基于USB和多線程的實時數(shù)據(jù)采集系統(tǒng)】相關(guān)文章:
基于Verilog HDL設(shè)計的自動數(shù)據(jù)采集系統(tǒng)04-12
基于Small RTOS51的數(shù)據(jù)采集器設(shè)計04-12
提高實時操作系統(tǒng)的實時性能和可靠性策略08-19
基于Vxworks實時操作系統(tǒng)的串口通信程序設(shè)計與實現(xiàn)08-19
利用Delphi 3.0開發(fā)微機數(shù)據(jù)采集與處理軟件系統(tǒng)04-12
基于數(shù)據(jù)庫技術(shù)的實驗室管理系統(tǒng)的研究08-18
基于校園一卡通數(shù)據(jù)系統(tǒng)的學(xué)生行為分析研究08-19