CCD" title="CCD">CCD(ChargeCoupledDevices)電荷耦合器件是20世紀(jì)70年代初發(fā)展起來(lái)的新型半導(dǎo)體集成光電器件,。由于CCD器件具有諸多優(yōu)點(diǎn):靈敏度高、光譜響應(yīng)寬,、動(dòng)態(tài)范圍大,、空間自?huà)呙璧?,使得?0年來(lái),,CCD器件及其應(yīng)用技術(shù)的研究取得了驚人的進(jìn)展,特別是在圖像傳感和非接觸測(cè)量領(lǐng)域的發(fā)展更為迅速。目前,,CCD應(yīng)用技術(shù)已成為集光學(xué),、電子學(xué)、精密機(jī)械及微計(jì)算機(jī)為一體的綜合性技術(shù),,在現(xiàn)代光子學(xué),、光電檢測(cè)技術(shù)和現(xiàn)代測(cè)量技術(shù)中成果累累。隨著CCD技術(shù)的迅猛發(fā)展,,針對(duì)CCD信號(hào)" title="信號(hào)">信號(hào)的采集" title="采集">采集及采集之后的信號(hào)如何與計(jì)算機(jī)進(jìn)行信息通信就成為CCD應(yīng)用的一個(gè)重要問(wèn)題,,而能夠針對(duì)CCD每一個(gè)象素進(jìn)行高速采集并實(shí)時(shí)的傳輸給計(jì)算機(jī)處理,將會(huì)大大的提高采集到的CCD信號(hào)的精度并解決實(shí)時(shí)處理的問(wèn)題,,這在CCD信號(hào)采集和處理領(lǐng)域都將有非常廣闊的前景,。
通用串行總線(xiàn)USB" title="USB">USB(UniversalSerialBus)是1995年由康柏、微軟,、IBM,,DEC等公司為解決傳統(tǒng)總線(xiàn)不足而推廣的一種新型的通信標(biāo)準(zhǔn)。USB總線(xiàn)接口" title="接口">接口具有較高的數(shù)據(jù)傳輸率,、使用靈活,、易擴(kuò)展等優(yōu)點(diǎn),非常適合CCD的數(shù)據(jù)采集,。他有低速,、全速和高速三種工作方式,即USBl.1版本中.的低速模式和全速模式,,低速模式的傳輸速率為1.5Mb/s,,支持一些不需要很大數(shù)據(jù)吞吐量和很高實(shí)時(shí)性的設(shè)備,如鼠標(biāo),、鍵盤(pán)等,;全速模式的傳輸速率可以達(dá)到12Mb/s。,,可以外接速率更高的外設(shè),,適合用于線(xiàn)陣CCD的數(shù)據(jù)采集。在USB 2.0版本中,,增加了一種高速模式,,其數(shù)據(jù)傳輸率最高可以達(dá)到480Mb/s,完全可以滿(mǎn)足高速CCD數(shù)據(jù)采集系統(tǒng)" title="系統(tǒng)">系統(tǒng)的需要,。
2 接口硬件組成
本系統(tǒng)選用高速的AD(模數(shù))轉(zhuǎn)換器,,用于采集CCD信號(hào),配以先進(jìn)先出(FIFO)存儲(chǔ)器作為數(shù)據(jù)高速緩沖器,,用于存儲(chǔ)AD轉(zhuǎn)換后的數(shù)據(jù),,并采用具有微控制器的USB接口芯片,從而通過(guò)USB接口將采集到的數(shù)據(jù)輸入計(jì)算機(jī)。系統(tǒng)原理框圖如圖1所示,。
(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類(lèi)的封裝,,可以提供給用戶(hù)驅(qū)動(dòng)程序的開(kāi)發(fā)框架,,只需用戶(hù)在相應(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 用戶(hù)應(yīng)用程序設(shè)計(jì)" title="設(shè)計(jì)">設(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)用了多線(xiàn)程的編程思想。從而實(shí)現(xiàn)同時(shí)進(jìn)行數(shù)據(jù)采集與實(shí)時(shí)顯示,。 為了實(shí)現(xiàn)與驅(qū)動(dòng)程序的通信,,應(yīng)用程序首先創(chuàng)建一個(gè)事件和一個(gè)線(xiàn)程,再將事件句柄傳遞給WDM,,用這一線(xiàn)程來(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ì)用類(lèi)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所示。
|