CCD信號(hào)采集系統(tǒng)的USB接口設(shè)計(jì)
(1)Windows DDK(Device Driver Kits),DDK基于匯編語(yǔ)言的編程方式和內(nèi)核模式的調(diào)用,對(duì)沒(méi)有深厚的操作系統(tǒng)原理和編程水平的人員來(lái)說(shuō),任務(wù)相當(dāng)艱巨。
(2)NuMega公司的Driverstudio工具開(kāi)發(fā)包,其中的DriverWorks實(shí)際上實(shí)現(xiàn)了對(duì)DDK類的封裝,可以提供給用戶驅(qū)動(dòng)程序的開(kāi)發(fā)框架,只需用戶在相應(yīng)的代碼段中加入自己系統(tǒng)的控制代碼即可,不必了解內(nèi)核機(jī)制,大大加速了USB外設(shè)的開(kāi)發(fā)速度。本系統(tǒng)就是使用DriverWorks來(lái)開(kāi)發(fā)USB設(shè)備驅(qū)動(dòng)程序的。生成的應(yīng)用接口函數(shù)在VC中調(diào)用,大大降低了主機(jī)軟件的難度。
3.3 用戶應(yīng)用程序設(shè)計(jì)
應(yīng)用程序?qū)崿F(xiàn)的功能有:?jiǎn)?dòng)/關(guān)閉USB設(shè)備,設(shè)置USB數(shù)據(jù)傳輸管道/端口,采集數(shù)據(jù),顯示數(shù)據(jù)等。這里,采用VisualC++6.0作為程序的開(kāi)發(fā)環(huán)境,并且充分運(yùn)用了多線程的編程思想。從而實(shí)現(xiàn)同時(shí)進(jìn)行數(shù)據(jù)采集與實(shí)時(shí)顯示。
為了實(shí)現(xiàn)與驅(qū)動(dòng)程序的通信,應(yīng)用程序首先創(chuàng)建一個(gè)事件和一個(gè)線程,再將事件句柄傳遞給WDM,用這一線程來(lái)等待WDM發(fā)送的事件消息,接收到事件消息后,就讀取驅(qū)動(dòng)程序的數(shù)據(jù),顯示數(shù)據(jù)。
在Windows中,Win32應(yīng)用程序調(diào)用的APl函數(shù)有5個(gè);CreateFile(),ReadFile(),WriteFi|e(),DeviceloControl()和CloseHandle()。
應(yīng)用程序?yàn)榇蜷_(kāi)一個(gè)WDM設(shè)備驅(qū)動(dòng)程序,使用CreateFile()函數(shù)。他的第一個(gè)參數(shù)是一個(gè)符號(hào)鏈接名。如果用DriverWorks創(chuàng)建一個(gè)WDM驅(qū)動(dòng)程序,通常會(huì)用類KUnitizedName生成一個(gè)設(shè)備符號(hào)鏈接名。這名字的后面有一個(gè)數(shù)字,一般是一個(gè)o。例如,若符號(hào)鏈接名為USBDevice,則傳遞給CreateFile()的是\\\\.\\USBDevice0。
一旦應(yīng)用程序獲得設(shè)備的有效句柄,他就能夠調(diào)用Win32函數(shù),這將產(chǎn)生對(duì)應(yīng)于此設(shè)備對(duì)象的相應(yīng)IRP,發(fā)送給驅(qū)動(dòng)程序,完成相應(yīng)功能。這種關(guān)系如表1所示。
本文引用地址:http://www.ex-cimer.com/article/150883.htm
4 結(jié) 語(yǔ)
本采集系統(tǒng)利用USB技術(shù)實(shí)現(xiàn)與計(jì)算機(jī)通信,有眾多的優(yōu)點(diǎn):
①安裝方便,支持即插即用。
②供電方便,可直接由主機(jī)通過(guò)USB接口提供5V的電壓。
⑧性價(jià)比高,遠(yuǎn)優(yōu)于并行口和串行口的CCD圖像采集系統(tǒng)。
評(píng)論