基于VC的USB2.0數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
開發(fā)系統(tǒng)應(yīng)用軟件的底層,需要極好的兼容性和穩(wěn)定性。對(duì)于廣大用戶而言,與系統(tǒng)的交互是通過應(yīng)用程序?qū)崿F(xiàn)的,因此,如何設(shè)計(jì)出運(yùn)行效率高、界面友好、穩(wěn)定性高的應(yīng)用程序是至關(guān)重要的因素。。VC++是開發(fā)Windows應(yīng)用程序的主流開發(fā)工具,充分利用它的面向?qū)ο筇匦缘腃++和功能強(qiáng)大的MFC來開發(fā)專業(yè)級(jí)的應(yīng)用程序,MFC是一個(gè)強(qiáng)大的、擴(kuò)展的C++類層次結(jié)構(gòu),它能使開發(fā)Windows應(yīng)用程序變得更加容易,而且在整個(gè)Windows家族中都是兼容的。Lab-Windows/CVI是以ANSI c為核心的交互式虛擬儀器開發(fā)環(huán)境,它將功能強(qiáng)大的C語(yǔ)言與測(cè)控技術(shù)有機(jī)結(jié)合,具有靈活的交互式編程方法和豐富的庫(kù)函數(shù)。本設(shè)計(jì)就是采用Visual C++6.0和LabWindows/CV提供的Graph控件來開發(fā)應(yīng)用程序的,應(yīng)用程序的主要功能有:打開/關(guān)閉USB設(shè)備,檢測(cè)USB設(shè)備,實(shí)現(xiàn)向USB設(shè)備發(fā)送指定數(shù)量的數(shù)據(jù)。
下面是各部分的一些代碼及說明:
1)查找、打開USB設(shè)備

2)線程(Thread)
線程就是程序中單獨(dú)順序的流控制。線程是進(jìn)程中的實(shí)體,一個(gè)進(jìn)程可以擁有多個(gè)線程,一個(gè)線程必須有一個(gè)父進(jìn)程。線程不擁有系統(tǒng)資源,只有運(yùn)行必須的一些數(shù)據(jù)結(jié)構(gòu);它與父進(jìn)程的其他線程共享該進(jìn)程所擁有的全部資源。圖3是線程的狀態(tài)轉(zhuǎn)換圖。
線程被分為兩種:用戶界面線程和工作線程(又稱為后臺(tái)線程)。本程序設(shè)計(jì)主要使用工作線程來執(zhí)行數(shù)據(jù)的讀寫操作等,它與用戶界面線程的區(qū)別是不用從CWinThread類派生來創(chuàng)建,對(duì)它來說最重要的是如何實(shí)現(xiàn)工作線程任務(wù)的運(yùn)行控制函數(shù)。
對(duì)于工作線程來說,啟動(dòng)一個(gè)線程,首先需要編寫一個(gè)希望與應(yīng)用程序的其余部分并行運(yùn)行的函數(shù),如Fun(),接著定義一個(gè)指向CWinThread對(duì)象的指針變量*pThread,調(diào)用AfxBeginThread(Fun,param,priori-ty)函數(shù),返回值賦給pThread變量的同時(shí)啟動(dòng)該線程執(zhí)行上述Funl()函數(shù),其中Fun是線程要運(yùn)行的函數(shù)的名字,亦即控制函數(shù)的名字,param是準(zhǔn)備傳送給線程函數(shù)Fun的任意32位值,priority是定義該線程的優(yōu)先級(jí)別,是預(yù)定義的常數(shù),可參考MSDN。
本程序設(shè)計(jì)中的關(guān)鍵代碼如下:

評(píng)論