光譜測試系統(tǒng)的軟件設(shè)計_第1頁
光譜測試系統(tǒng)的軟件設(shè)計_第2頁
光譜測試系統(tǒng)的軟件設(shè)計_第3頁
光譜測試系統(tǒng)的軟件設(shè)計_第4頁
光譜測試系統(tǒng)的軟件設(shè)計_第5頁
已閱讀5頁,還剩53頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、摘 要當(dāng)今顯示器件在各行各業(yè)已經(jīng)得到了廣泛的應(yīng)用。在顯示器件研發(fā)和測試過程中,器件的發(fā)光光譜是一個重要參數(shù)。本文詳細(xì)闡述了一個光譜測試系統(tǒng)的軟件設(shè)計開發(fā)過程,該軟件基于Windows平臺。系統(tǒng)通過控制研華公司PCI-1710L數(shù)據(jù)采集卡,采用中斷方式進(jìn)行采集光源光譜數(shù)據(jù),并達(dá)到實時顯示的目的。軟件利用Visual C+開發(fā),采用單文檔結(jié)構(gòu)。界面友好,操作簡便,現(xiàn)主要應(yīng)用于科研。關(guān)鍵字:光譜,軟件,PCI-1710,中斷,采集ABSTRACTNowadays, display devices are widely used everywhere. In the process of the de

2、velopment and reaserch, the spectrum is important parameter. The design of software of the spectrum measurement system, which is based on the Visual C+ of Windows platform, is described in this paper. The system controls the Advantech's PCI-1710L data acquisition card to sample and display the s

3、pectral date real-time by interrupt mode. The software is a single document structure and has a friendly interface. Now, it is mainly used in scientific research.Key Words: spectra, software, PCI-1710, interrupt, acquisition目 錄第1章引言11.1 選題背景11.2 研究目標(biāo)和意義11.3 研究思路1第2章光譜測試系統(tǒng)的光學(xué)原理32.1 表色系和色度圖32.1.1 CIE表

4、色系32.1.2 光源(發(fā)光體)的表色42.1.3 非發(fā)光體的表色52.1.4 1931CIE-xy色度圖52.2 顯示色數(shù)6第3章編譯軟件概述73.1 Windows下程序設(shè)計方法與MS-DOS的區(qū)別73.2 Microsoft Visual C+簡介83.3 MFC簡介93.3.1 封裝103.3.2 MFC的宏觀框架體系10第4章光譜測試系統(tǒng)軟件設(shè)計124.1 硬件結(jié)構(gòu)及連接方案124.1.1 光譜測試系統(tǒng)124.1.2 研華PCI-1710L多功能數(shù)據(jù)采集卡介紹134.1.3 觸發(fā)方式的選擇154.1.4 采集系統(tǒng)信號連接方案164.1.5 使用的緩沖區(qū)174.1.6 關(guān)于FIFO18

5、4.1.7 內(nèi)部緩沖區(qū)的使用方式194.1.8 循環(huán)(cycle) 和非循環(huán)(no_cycle)204.1.9 Raw Data(原始數(shù)據(jù))和voltage(電壓值)204.2 軟件設(shè)計214.2.1 測試系統(tǒng)開發(fā)需要完成的任務(wù)214.2.2 程序的總體構(gòu)架214.2.3 數(shù)據(jù)采集及顯示程序流程圖224.2.4 數(shù)據(jù)采集模塊的編寫264.2.5 數(shù)據(jù)存儲模塊的編寫284.2.6 實時畫圖模塊的編寫294.2.7 軟件界面30結(jié)束語33參考文獻(xiàn)34致謝35附錄36附錄一:用來采集數(shù)據(jù)的線程函數(shù)36附錄二:進(jìn)行數(shù)據(jù)存儲和畫圖的WriteData()函數(shù)37附錄三:BufferChange事件發(fā)生時

6、所響應(yīng)的adBufChangeEvent()函數(shù)39外文資料原文41翻譯文稿49第1章 引言1.1 選題背景隨著信息科學(xué)的飛速發(fā)展,數(shù)據(jù)采集和存儲技術(shù)已經(jīng)是數(shù)字信號處理中非常重要的環(huán)節(jié),將決定整個系統(tǒng)的性能。它廣泛應(yīng)用于雷達(dá),通信,遙測遙感等領(lǐng)域。它己經(jīng)成為人們獲得外界信息的重要手段。基于總線的數(shù)據(jù)采集與存儲系統(tǒng),由于可靠且易于實現(xiàn)、經(jīng)濟等優(yōu)點,得到了廣泛的應(yīng)用。顯示器件研發(fā)過程中,光譜測試工作需要反復(fù)進(jìn)行,使用人工進(jìn)行測量不但費時費力,而且得不償失。利用數(shù)據(jù)采集系統(tǒng)來實現(xiàn)光譜數(shù)據(jù)的自動化采集與分析對于顯示器件的開發(fā)與研究非常有幫助,是科研中很有價值的一種手段。實驗室目前使用的光譜測試系統(tǒng)是上

7、世紀(jì)90年代中期開發(fā)的,系統(tǒng)中所采用的微機型號為80386,操作系統(tǒng)為MS-DOS,自制的采集卡接口為ISA插槽。隨著近年來Microsoft視窗平臺的普及與PC主機性能不斷地提高,功能不斷地強大,在科研中發(fā)揮的作用越來越大,該舊式光譜測試系統(tǒng)已顯得較為落后。1.2 研究目標(biāo)和意義針對以上情況,對現(xiàn)有光譜測試系統(tǒng)進(jìn)行升級已經(jīng)迫在眉睫。根據(jù)當(dāng)前微機系統(tǒng)的發(fā)展?fàn)顩r,通過購買基于PCI接口的研華 PCI-1710L數(shù)據(jù)采集卡,在現(xiàn)今廣泛使用的PC機型上,開發(fā)一套基于Windows的光譜測試系統(tǒng)已成為可能。而且舊式的光譜測試系統(tǒng)基于DOS方式生成光譜數(shù)據(jù),使用3.5英寸軟盤進(jìn)行存儲,并且打印功能基于舊

8、式的打印驅(qū)動程序,需針對每種打印機設(shè)計不同的驅(qū)動程序,十分繁瑣;而新系統(tǒng)基于Windows平臺,以上的問題都迎刃而解了。即使微機出現(xiàn)問題,也可方便地將系統(tǒng)遷移到另外的微機中。1.3 研究思路本次課題的任務(wù)就是光譜測試系統(tǒng)的軟件設(shè)計,即基于Windows平臺,以Windows Visual C+ 6.0作為開發(fā)工具,使用研華公司出品的PCI-1710L數(shù)據(jù)采集卡,借助其內(nèi)部提供的部分庫函數(shù),設(shè)計一套可以實時采集、顯示光源光譜數(shù)據(jù)的軟件。第2章 光譜測試系統(tǒng)的光學(xué)原理2.1 表色系和色度圖表示光色系統(tǒng)的表示系以兩種方式:一種是以加法混色為基礎(chǔ)的生物物理方式;另一種是顏色的色品(也稱色調(diào))、明度、飽

9、和度三特征為基礎(chǔ)的純生物方式。前者是CIE(國際照明委員會)表色系,后者是用顏色標(biāo)樣的孟賽爾(Munsell)表色系。本節(jié)重點介紹CIE表色系。由色視覺所產(chǎn)生的色光(色激勵)范圍為380780nm的可見光范圍。2.1.1 CIE表色系 根據(jù)加法混色法則將三基色進(jìn)行適當(dāng)比例混合就能得到等能量單色光的一種色光。因此,任何一種顏色的光都可以有選擇的三基色光,按一定比例混合而成。三基色有許多選擇方案,CIE表色系規(guī)定三基色的單色光為紅光R(=700nm),綠光G(=541-6nm),藍(lán)光B(=435.8nm)。CIE表色系可分為CIE-RGB表色系和CIE-XYZ表色系。前者使用規(guī)定得等量的R、G、B

10、單色光作為三基色的表色系,而后者則由于CIE-XYZ表色系中要配置等能白光存在著負(fù)值混色,因而給測量和計算帶來許多不便。于是通過對CIE-RGB表色系的數(shù)學(xué)變換建立了CIE-XYZ表色系,欲配置任何一種似乎都能用三個虛設(shè)的基色X、Y、Z的正值混色而到。該色系在實際使用中非常方便,故又稱作CIE-XYZ標(biāo)準(zhǔn)表色系。圖2-1 CIE-XYZ標(biāo)準(zhǔn)表色系所示為在CIE-XYZ標(biāo)準(zhǔn)表色系中,用,表示等能光譜的三色分布系數(shù)(又稱光譜三刺激值)的混色曲線。圖中曲線與圖2-1所示的相對視感度曲線分布相同。2.1.2 光源(發(fā)光體)的表色 光源光度測量是建立在色度學(xué)的基礎(chǔ)上。我國顏色標(biāo)準(zhǔn)采用國際照明委員會(CI

11、E)推薦的1931CIE-XYZ系統(tǒng),是以一組“1931CIE-XYZ標(biāo)準(zhǔn)色度觀察者光譜三刺激值”數(shù)據(jù)為基礎(chǔ)。該數(shù)據(jù)是根據(jù)加混色定律在實驗基礎(chǔ)上獲得的,加混色定律指出任何顏色都可以用線性無關(guān)的三原色適當(dāng)?shù)叵嗉踊旌吓c之匹配,并具有線性和可加性。光源的顏色是可見光輻射作用于人眼所形成顏色刺激的結(jié)果,假定進(jìn)入到人眼的相對光譜輻射功率為j(l),那么由它引起的CIE三刺激值X,Y,Z可以用下列方程組表示為: (2-1)式(2-1)中就是1931CIE-XYZ色度系統(tǒng)的光譜三刺激值。在實際計算三刺激值時,常用式(2-2)求和來代替式(2-1)的積分式: (2-2)式(2-2)中的稱為波長間隔,通常為5n

12、m或10nm。式(2-1)和式(2-2)中的k稱為調(diào)整系數(shù),它的選擇是把Y值調(diào)整為100,即: (2-3)式(2-2)計算得到X、Y、Z三刺激值后,再利用式(2-4)就可求得待測光源的色度坐標(biāo)。(2-4)2.1.3 非發(fā)光體的表色 非發(fā)光體(物體)表色的光譜三刺激值X、Y、Z可以用式(2-5)表示為: (2-5)式中,()是照射到物體的光輻射功率,()為該物體的光反射率或透射率。求出光譜三刺激值X、Y、Z后,再利用式(2-4)就可計算出其色度坐標(biāo)。2.1.4 1931CIE-xy色度圖各種顏色的色度都能夠在1931CIE-xy色度圖上找到相對的色點位置;反之在色度圖上的任一色點都可以確定出它的

13、色度坐標(biāo)。不同的光色,由色知覺命名與不同的色名。圖1-33表示了色度和色名的關(guān)系以及標(biāo)準(zhǔn)單色光的坐標(biāo)點位置。圖中將不同波長的單色光色坐標(biāo)點連接起來的曲線叫做光譜軌跡曲線,連接軌跡首尾兩點的直線叫做純紫(非光譜色光軌跡)軌跡。兩軌跡所圍成的舌形曲線內(nèi)包括了一切物理上可能實現(xiàn)的顏色。舌形曲線上各點對應(yīng)著各光譜單色光。各點即可用波長表示,又可用色坐標(biāo)表示。曲線內(nèi)各點為非單色的復(fù)合光。根據(jù)不同坐標(biāo)點的顏色不同又可劃分成若干小區(qū)域,形成色域。圖2-2也適用于明度Y值有著較寬變化范圍的發(fā)光體的色度量。對于非發(fā)光體的色,因為明度Y值明顯地受色知覺的變化,所以它的色名和色度坐標(biāo)的關(guān)系隨Y值而有所不同。圖2-2

14、 色度和色名2.2 顯示色數(shù)顯示色數(shù)是指能夠顯示的顏色的總數(shù)。它用每個基色的灰度等級數(shù)相乘之積來表示。顯示色數(shù)除了取決于顯示器本身的性能之外,還取決于驅(qū)動信號系統(tǒng)的水平。顯示色數(shù)是用來表示中間色的規(guī)定細(xì)度的,而不是直接表示顯示顏色的范圍和鮮明度。色域表示顯示顏色的范圍和鮮明度,通常用CIEl931國際標(biāo)準(zhǔn)色度圖表示,如圖2-2所示。在馬蹄形線框中,越接近外側(cè)顏色的飽和度越高,越接近中心就越靠近白色。所謂白色的表示方式,并沒有統(tǒng)一的規(guī)定說明它是指何種程度的顏色再現(xiàn)能力。第3章 編譯軟件概述3.1 Windows下程序設(shè)計方法與MS-DOS的區(qū)別MS-DOS程序設(shè)計方法主要是過程驅(qū)動的程序設(shè)計方法

15、。在這種設(shè)計思想的指導(dǎo)下,一個程序會有一個明顯的開始,明顯的執(zhí)行過程以及明顯的結(jié)束。在程序的執(zhí)行過程中,開發(fā)者能直接控制程序執(zhí)行的順序。Windows程序設(shè)計方法與MS-DOS程序設(shè)計的不同就在于Windows程序是事件驅(qū)動的。事件驅(qū)動程序由事件發(fā)生來控制事件驅(qū)動的。程序自始至終以一種非順序的方式處理事件。在Windows的這種運行機制下,過程驅(qū)動的程序設(shè)計方法明顯不適用。圖3-1 Windows消息處理的機制Windows程序的流程,消息處理的機制如圖3-1所示:事件驅(qū)動的程序設(shè)計圍繞著消息的產(chǎn)生與處理而展開。Windows應(yīng)用程序所做的最主要的工作,就是對各種消息進(jìn)行處理。因此,應(yīng)用程序的

16、執(zhí)行順序是無法完全預(yù)知的。每當(dāng)事件發(fā)生時,Windows做出記錄并將消息發(fā)送到有關(guān)應(yīng)用程序中去,等待處理。Windows為應(yīng)用程序消息提供稱為消息隊列(Message Queue)的保留區(qū),在操作系統(tǒng)中每個正在執(zhí)行的程序都有自己的消息隊列,由操作系統(tǒng)以及其他應(yīng)用程序或用戶向應(yīng)用程序發(fā)送的全部消息都存儲在隊列中,等待被調(diào)用處理。Windows應(yīng)用程序以特定的循環(huán)調(diào)用Windows消息。消息循環(huán)是一個簡單的while()循環(huán),它將一直運行,直到接受終止執(zhí)行的消息,才使應(yīng)用程序結(jié)束循環(huán)。3.2 Microsoft Visual C+簡介只要提到在Windows(95/98/2000/XP等)下進(jìn)行3

17、2位的應(yīng)用程序開發(fā),就不能不提到Visual C+。Visual C+ 是Microsoft Visual Studio開發(fā)工具的組件之一。相比其他的編程工具而言,Visual C+ 在提供可視化的編程方法的同時,也適用于編寫直接對系統(tǒng)進(jìn)行底層操作的程序,其生成代碼的質(zhì)量,也要優(yōu)于其他的很多開發(fā)工具。Visual C+ 軟件包包含了許多單獨的組件,如編輯器、編譯器、鏈接器、exe生成用實用程序、調(diào)試器以及各種各樣為開發(fā)Microsoft Windows下的C/C+ 程序而設(shè)計的工具。重要的是,它還包含有一個名為Developer Studio的集成開發(fā)環(huán)境(Integrated Develop

18、ing Environment,IDE)。Microsoft Developer Studio用于Visual J+、Visual InterDev、Visual C+。Developer Studio把所有的Visual C+工具結(jié)合,并且集成為一個整體。通過一個由窗口、對話框、菜單、工具欄、快捷鍵及宏等組成的和諧系統(tǒng),開發(fā)人員可以觀察和控制整個開發(fā)進(jìn)程。該環(huán)境幾乎就是Visual C+ 中所能“看見”的所有東西。所有其他事情都在其管理下在幕后運行。它有以下的特性:1) 自動化和宏支持可以使用腳本來自動操縱例行的和重復(fù)的任務(wù)。可以將Visual Studio及其組件當(dāng)作對象來操縱,還可以使用

19、Developer Studio對象模型創(chuàng)建集成的附加程序。2) ClassView組織C+ 中的類,包括使用MFC、ATL創(chuàng)建或自定義的新類??啥ㄖ频墓ぞ邨l和菜單3) 多功能調(diào)試器連接到正在運行的程序并對其進(jìn)行調(diào)試,還可以使用宏語言來自動操作調(diào)試器。4) 與瀏覽器集成可以在Developer Studio中查看Internet上的World Wide Web頁。5) 多工程支持可以在一個工作空間中包括多個不同類型的工程。工作空間文件使用擴展名.dsw來代替過去的擴展名.mdp,工程文件使用擴展名.dsp來代替過去的擴展名.mak。6) 改進(jìn)的資源編輯器在Visual C+ 中,可以使用Wiz

20、ardBar來將代碼與程序中的可視元素掛鉤。7) 改進(jìn)的文本編輯器可以使用正確的句法顏色設(shè)置來顯示無擴展名的頭文件??梢远ㄖ七x定頁邊距的顏色來更好地區(qū)分同一源代碼窗口中的控件和文本區(qū)域。Find in Files命令支持兩個單獨的窗格。3.3 MFC簡介Visual C+ 的核心是Microsoft基礎(chǔ)類庫,即通常所說的MFC。盡管使用Visual C+ 進(jìn)行編程并不一定要使用MFC,使用MFC也不一定就要使用Visual C+,其他公司的很多軟件產(chǎn)品如Borland C+ 的新版本也提供了對MFC的支持,然而事實上在大多數(shù)情況下,提到Visual C+ 時指的就是MFC,而提到MFC時指的也

21、就是Visual C+。MFC (Microsoft Foundation Class Library)中的各種類結(jié)合起來構(gòu)成了一個應(yīng)用程序框架,它的目的就是讓程序員在此基礎(chǔ)上來建立Windows下的應(yīng)用程序,這是一種相對SDK來說更為簡單的方法。因為總體上,MFC框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標(biāo)準(zhǔn)實現(xiàn)方法,程序員所要做的就是通過預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個輪廓。Microsoft Visual C+提供了相應(yīng)的工具來完成這個工作:AppWizard可以用來生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設(shè)計用戶接口;ClassWizard用來協(xié)助添加

22、代碼到框架文件;最后,編譯,則通過類庫實現(xiàn)了應(yīng)用程序特定的邏輯。3.3.1 封裝 構(gòu)成MFC框架的是MFC類庫。MFC類庫是C+類庫。這些類或者封裝了Win32應(yīng)用程序編程接口,或者封裝了應(yīng)用程序的概念,或者封裝了OLE特性,或者封裝了ODBC和DAO數(shù)據(jù)訪問的功能,等等,分述如下。1) 對Win32應(yīng)用程序編程接口的封裝用一個C+ Object來包裝一個Windows Object。例如:class CWnd是一個C+ window object,它把Windows window(HWND)和Windows window有關(guān)的API函數(shù)封裝在C+ window object的成員函數(shù)內(nèi),后者

23、的成員變量m_hWnd就是前者的窗口句柄。2) 對應(yīng)用程序概念的封裝使用SDK編寫Windows應(yīng)用程序時,總要定義窗口過程,登記Windows Class,創(chuàng)建窗口,等等。MFC把許多類似的處理封裝起來,替程序員完成這些工作。另外,MFC提出了以文檔-視圖為中心的編程模式,MFC類庫封裝了對它的支持。文檔是用戶操作的數(shù)據(jù)對象,視圖是數(shù)據(jù)操作的窗口,用戶通過它處理、查看數(shù)據(jù)。3) 對COM/OLE特性的封裝OLE建立在COM模型之上,由于支持OLE的應(yīng)用程序必須實現(xiàn)一系列的接口(Interface),因而相當(dāng)繁瑣。MFC的OLE類封裝了OLE API大量的復(fù)雜工作,這些類提供了實現(xiàn)OLE的更高

24、級接口。4) 對ODBC功能的封裝以少量的能提供與ODBC之間更高級接口的C+類,封裝了ODBC API的大量的復(fù)雜的工作,提供了一種數(shù)據(jù)庫編程模式。3.3.2 MFC的宏觀框架體系 如前所述,MFC實現(xiàn)了對應(yīng)用程序概念的封裝,把類、類的繼承、動態(tài)約束、類的關(guān)系和相互作用等封裝起來。這樣封裝的結(jié)果對程序員來說,是一套開發(fā)模板(或者說模式)。針對不同的應(yīng)用和目的,程序員采用不同的模板。例如,SDI應(yīng)用程序的模板,MDI應(yīng)用程序的模板,規(guī)則DLL應(yīng)用程序的模板,擴展DLL應(yīng)用程序的模板,OLE/ACTIVEX應(yīng)用程序的模板,等等。這些模板都采用了以文檔-視為中心的思想,每一個模板都包含一組特定的類

25、。典型的MDI應(yīng)用程序的構(gòu)成將在下一節(jié)具體討論。為了支持對應(yīng)用程序概念的封裝,MFC內(nèi)部必須作大量的工作。例如,為了實現(xiàn)消息映射機制,MFC編程框架必須要保證首先得到消息,然后按既定的方法進(jìn)行處理。又如,為了實現(xiàn)對DLL編程的支持和多線程編程的支持,MFC內(nèi)部使用了特別的處理方法,使用模塊狀態(tài)、線程狀態(tài)等來管理一些重要信息。雖然,這些內(nèi)部處理對程序員來說是透明的,但是,懂得和理解MFC內(nèi)部機制有助于寫出功能靈活而強大的程序。總之,MFC封裝了Win32 API,OLE API,ODBC API等底層函數(shù)的功能,并提供更高一層的接口,簡化了Windows編程。同時,MFC支持對底層API的直接調(diào)

26、用。MFC提供了一個Windows應(yīng)用程序開發(fā)模式,對程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,預(yù)定義或?qū)崿F(xiàn)了許多事件和消息處理,等等??蚣芑蛘哂善浔旧硖幚硎录?,不依賴程序員的代碼;或者調(diào)用程序員的代碼來處理應(yīng)用程序特定的事件。MFC是C+類庫,程序員就是通過使用、繼承和擴展適當(dāng)?shù)念悂韺崿F(xiàn)特定的目的。例如,繼承時,應(yīng)用程序特定的事件由程序員的派生類來處理,不感興趣的由基類處理。實現(xiàn)這種功能的基礎(chǔ)是C+對繼承的支持,對虛擬函數(shù)的支持,以及MFC實現(xiàn)的消息映射機制。第4章 光譜測試系統(tǒng)軟件設(shè)計4.1 硬件結(jié)構(gòu)及連接方案數(shù)據(jù)采集與控制系統(tǒng)的基本任務(wù)是物理信號(電壓/電流)的

27、產(chǎn)生或測量。但是要使計算機系統(tǒng)能夠測量物理信號,必須要使用傳感器把物理信號轉(zhuǎn)換成電信號(電壓或者電流信號)。有時不能把被測信號直接連接到數(shù)據(jù)采集卡,而必須使用信號調(diào)理輔助電路,先將信號進(jìn)行一定的處理。總之,數(shù)據(jù)采集與控制系統(tǒng)是在硬件板卡/遠(yuǎn)程采集模塊的基礎(chǔ)上借助軟件來控制整個系統(tǒng)的工作包括采集原始數(shù)據(jù)、分析數(shù)據(jù)、給出結(jié)果等。4.1.1 光譜測試系統(tǒng)聚光鏡圖4-1 光譜測試系統(tǒng)框圖光電器件放大器入射狹縫出射狹縫光柵等光源穩(wěn)壓電源光譜測試系統(tǒng)的框圖如圖4-1所示,主要由光源、聚光鏡、單色儀和電壓放大器組成。單色儀包含入射狹縫、出射狹縫、穩(wěn)壓電源和光電轉(zhuǎn)換器件及其它器件構(gòu)成。光源發(fā)出的光經(jīng)聚光鏡會聚

28、后照在單色儀的入射狹縫上,入射的光經(jīng)光柵色散后,單色光由出射狹縫射出并照在光電轉(zhuǎn)換器件上,它所產(chǎn)生的光電壓信號經(jīng)高精度電壓放大器放大后,所得電壓值就可用采集設(shè)備獲取并處理。單色儀中的光電倍增管、放大器與電平接口電路共同組成模擬系統(tǒng)部分,采集卡及其接口設(shè)備與微機共同構(gòu)成數(shù)字系統(tǒng)部分。被測單色光射入單色儀后,經(jīng)光電管轉(zhuǎn)換成電壓信號,再經(jīng)放大器放大至與A/D轉(zhuǎn)換相匹配的程度后,送入數(shù)字處理系統(tǒng),經(jīng)過采集卡內(nèi)置的A/D轉(zhuǎn)換器轉(zhuǎn)換成數(shù)字量,再把離散后的數(shù)字信號送入微型計算機進(jìn)行處理及分析。電平接口電路的功能是將單色儀步進(jìn)電機的輸出脈沖PMOS電平(-2至-10V)轉(zhuǎn)換為數(shù)據(jù)采集卡A/D轉(zhuǎn)換中所需的觸發(fā)電

29、平,此電平為TTL電平(05V)。4.1.2 研華PCI-1710L多功能數(shù)據(jù)采集卡介紹在本次數(shù)據(jù)采集預(yù)處理系統(tǒng)設(shè)計與開發(fā)過程中,選用了研華(Advantech)公司生產(chǎn)的PCI-1710L多功能數(shù)據(jù)采集卡作為系統(tǒng)核心部件。PCI-1710L是一款基于PCI總線的多功能數(shù)據(jù)采集卡。其先進(jìn)的電路設(shè)計使得它具有更高的質(zhì)量和更多的功能:1) 即插即用PCI-1710L是即插即用設(shè)備,完全符合PCI總線規(guī)范版本2.1。在采集卡安裝過程中,基地址、中斷等有關(guān)總線的參數(shù)配置都可以通過即插即用功能予以正確的自動設(shè)置,不需要操作任何的跳線或者DIP開關(guān)。2) 單端或差分混合的模擬量輸入PCI-1710L具備一

30、個自動的通道/增益掃描電路,可在采樣時負(fù)責(zé)控制多路復(fù)用器的轉(zhuǎn)換,而且卡中針對不同的通道內(nèi)置了多種增益值及配置參數(shù),使得多種輸入方式靈活組合。3) 板載先進(jìn)先出(FIFO)存儲器PCI-1710L提供板載先進(jìn)先出緩沖存儲器,最多可存儲4K個A/D采樣值。當(dāng)開啟FIFO功能時,每當(dāng)FIFO半滿或全滿時,采集卡都會產(chǎn)生一個中斷,并進(jìn)行數(shù)據(jù)的轉(zhuǎn)移和存儲,以防止數(shù)據(jù)丟失,因此有效的提高了數(shù)據(jù)采集速度和可靠性。4) 16通道數(shù)字輸入與16通道數(shù)字輸出PCI-1710L提供16個通道的數(shù)字輸入與16個通道的數(shù)字輸出。這給用戶提供了很高的設(shè)計自由度與靈活性,可以按照需求設(shè)計所需的應(yīng)用方案5) 板載可編程計數(shù)器

31、PCI-1710L搭載了一個可編程計數(shù)器,可用于產(chǎn)生A/D轉(zhuǎn)換所需的觸發(fā)信號。計數(shù)器芯片集成了以10MHz頻率工作的3個16位計數(shù)器,一個用作輸入通道的事件計數(shù)器或者用于產(chǎn)生脈沖,另外兩個被疊加成為一個32位計數(shù)器用于脈沖觸發(fā)。6) 短路保護PCI-1710L 在+12VDC/+5VDC電源引腳搭載了短路保護裝置。當(dāng)短路發(fā)生時,保護裝置就會自動地切斷輸出電流。在短路結(jié)束2分鐘左右以后,電源引腳會重新輸出電流。為了方便使用和拓展采集卡的使用范圍,PCI-1710L提供了68針腳SCSI-2線纜PCI-10168(長度1米)與68針腳SCSI-2接線終端板ADAM-3968。PCI-10168內(nèi)置

32、的連接線全部為雙絞線,并且將模擬信號傳輸線與數(shù)字信號傳輸線互相屏蔽分離,這給線纜賦予了特殊的信號噪聲屏蔽功能,使信號具有最小的交叉串?dāng)_,最大限度地降低了EMI/EMC問題。ADAM-3968用于將采集卡的所有的針腳引出為DIN連接方式的接線終端??傊?,PCI-1710L具有以下鮮明的特點:1) 支持PCI Bus Master方式的數(shù)據(jù)傳送2) 16通道單端或8通道差分模擬量輸入,或以組合方式輸入3) 12位A/D轉(zhuǎn)換器,采樣速率可達(dá)100千赫茲4) 可編程的每通道輸入增益5) 可自由組合的單端或差分輸入6) 板載4千樣本FIFO緩沖器7) 16通道數(shù)字輸入8) 16通道數(shù)字輸出9) 可編程的

33、計數(shù)器/定時器10) 自動通道/增益掃描4.1.3 觸發(fā)方式的選擇在進(jìn)行數(shù)據(jù)采集時,用戶可以設(shè)定某些信號的特定條件,例如一個數(shù)字信號的高電平(logic high)或低電平(logic low),或是一個電壓信號的特定值,一旦滿足這些特定條件,數(shù)據(jù)采集卡才真正開始采集并將其傳送到系統(tǒng)中,這便是觸發(fā)的基本原理。一般地說來,對數(shù)據(jù)采集板卡的進(jìn)行編程使用的觸發(fā)方式主要有以下兩種:軟件觸發(fā)方式,外部中斷觸發(fā)方式。1) 軟件觸發(fā)方式實際上就是采用系統(tǒng)提供的時鐘在毫秒級的精確等級上,通過對寄存器的查詢來實現(xiàn)數(shù)據(jù)采集,由于其采集速度比較慢,因此多用于低速數(shù)據(jù)采集場合。2) 外部中斷觸發(fā)方式使用外部中斷傳輸方

34、式,你需要編寫中斷服務(wù)程序,將板卡上的數(shù)據(jù)傳輸?shù)筋A(yù)先定義好的內(nèi)存變量中,每次A/D轉(zhuǎn)換結(jié)束后都會產(chǎn)生一個硬件中斷,然后由中斷服務(wù)程序完成數(shù)據(jù)傳輸。當(dāng)轉(zhuǎn)動單色儀的波長手輪時,在出射狹縫處將按順序射出各種波長的單色光,同時單色儀內(nèi)的步進(jìn)電機隨著單色光波長的變化同步地發(fā)出脈沖信號,波長隨步進(jìn)電機轉(zhuǎn)動變化速度為1Å/45ms。軟件的設(shè)計要求,獲得的數(shù)據(jù)必須要與單色光波長相匹配。比較兩種觸發(fā)方式:1)軟件觸發(fā)方式純粹以時間的對應(yīng)關(guān)系來使采集數(shù)據(jù)與波長匹配:將采集數(shù)據(jù)的時間間隔與波長變化速度對應(yīng),設(shè)定間隔一定的時長采集一次數(shù)據(jù)。這種方式可能存在一定的誤差,無法精準(zhǔn)地使采集的數(shù)據(jù)與光波長變化相對應(yīng)

35、,而且由于軟件觸發(fā)采用內(nèi)部時鐘作為觸發(fā)源,在采集前必須使單色儀波長手輪先轉(zhuǎn)動,內(nèi)部時鐘開始計時并開始采集數(shù)據(jù)時,無法確定此時的波長值(即單色儀波長手輪轉(zhuǎn)動的位置),因此無法準(zhǔn)確起始采集波長。2)外部中斷觸發(fā)方式單色儀內(nèi)的步進(jìn)電機隨著單色光波長的變化同步地發(fā)出脈沖信號,只有當(dāng)沖來臨時才會采集數(shù)據(jù),因此可以通過脈沖實現(xiàn)波長與采集數(shù)據(jù)之間的關(guān)系,也能很好的確定起始波長值。因此,本設(shè)計采樣定時使用了單色儀步進(jìn)電機的輸出脈沖作為觸發(fā)信號,通過PCI-1710L的中斷觸發(fā)功能,以及與它配合的相應(yīng)的軟件程序來實現(xiàn)。4.1.4 采集系統(tǒng)信號連接方案該數(shù)據(jù)采集卡提供了強大的功能,為本次系統(tǒng)設(shè)計與開發(fā)提供了堅實的

36、支柱。設(shè)計方案中需要使用的主要是采集卡外部中斷觸發(fā)的模擬量輸入功能。圖4-2 PCI-1710L數(shù)據(jù)接口定義被測電壓信號信號地線步進(jìn)觸發(fā)信號光譜測試系統(tǒng)模擬電路為數(shù)字電路提供了三根信號接線:地線、光電壓信號線與用于觸發(fā)的脈沖信號線。只有光電壓信號線是真正的有效數(shù)據(jù)獲取端,因此采用單端輸入的方式,并且單端輸入以一個共同接地點為參考點。將地線、光電壓信號線與用于觸發(fā)的脈沖信號線分別連接至采集接口,同時根據(jù)設(shè)備使用手冊,需要使用外部觸發(fā)時必須將對外部觸發(fā)使能端施以+5V以上的高電平,即可以完成信號連接。PCI-1710L數(shù)據(jù)采集卡的數(shù)據(jù)接口定義如圖4-2所示:被測信號是單端輸入的電壓信號,使用模擬輸

37、入通道0(AI0)以單端信號輸入方式對其進(jìn)行采樣。最終的信號連接方案為:1) 將被測電壓信號接至AI0(第68腳)2) 將地線接至AIGND3) 將采集卡的+5V(第1腳)與TRI_GATE(第3腳)相連。4) 將外部脈沖,即步進(jìn)觸發(fā)信號接至EXT_TRG(第2腳)從信號源設(shè)備引出的這些線纜全部通過ADAM-3968接線終端與采集卡相連,完成本次設(shè)計任務(wù)的硬件連接。4.1.5 使用的緩沖區(qū)在驅(qū)動程序進(jìn)行A/D或D/A轉(zhuǎn)換時,有三個相關(guān)的概念需要分清楚:采集板上的FIFO,計算機內(nèi)存中的內(nèi)部緩沖區(qū)和用戶緩沖區(qū)。1) FIFOFIFO為采集板卡上自帶的使用FIFO緩沖區(qū)可以達(dá)到更高的采集頻率,如

38、PCI-1710使用4K的FIFO緩沖區(qū)后最高采樣頻率可達(dá)到100KHZ。2) 內(nèi)部緩沖區(qū)內(nèi)部緩沖區(qū)是數(shù)據(jù)采集程序動態(tài)分配給驅(qū)動程序使用的一塊內(nèi)存區(qū)域。內(nèi)部緩沖區(qū)主要由驅(qū)動程序使用,驅(qū)動程序從板卡FIFO中或寄存器將數(shù)據(jù)通過中斷方式傳輸?shù)絻?nèi)部緩沖區(qū)。在例程中該BUFFER指針一般用hBuf命名。如果是非循環(huán)采集,采樣完設(shè)定好的數(shù)據(jù)個數(shù)后采集停止,驅(qū)動停止往內(nèi)部緩沖區(qū)存放數(shù)據(jù)。如果循環(huán)采集,內(nèi)部緩沖區(qū)會循環(huán)使用,需要在BUFFERCHANGE事件用DRV_FAITransfer及時將數(shù)據(jù)取走,以免被新到的數(shù)據(jù)覆蓋??梢苑诺接脩艟彌_區(qū)中,或者進(jìn)行存到硬盤的其他數(shù)據(jù)操作。3) 用戶緩沖區(qū)用戶緩沖區(qū)是

39、用戶自己用來存放數(shù)據(jù)的地方,實際應(yīng)用當(dāng)中,用戶可以根據(jù)需要開辟用戶緩沖區(qū)的大小。例如開辟一個較大的用戶緩沖區(qū),在循環(huán)采集中將每次采集的數(shù)據(jù)依次存放其中。采集結(jié)束后統(tǒng)一處理。在例程中該 BUFFER 指針一般用hUserBuf命名。這二者還有一個區(qū)別在于,內(nèi)部緩沖區(qū)中存放的是Raw Data(原始數(shù)據(jù)),用戶緩沖區(qū)中存放的可以是原始數(shù)據(jù)也可以是Float data(電壓值)。通過ptFAITransfer.DataType參數(shù)來確定轉(zhuǎn)換時是原始數(shù)據(jù)還是電壓值。關(guān)于原始數(shù)據(jù)和電壓值的區(qū)別后面會有介紹。中斷觸發(fā)方式的A/D轉(zhuǎn)換中三種緩存區(qū)的使用方式如圖4-5所示:4.1.6 關(guān)于FIFO為了防止在高

40、速數(shù)據(jù)采集時丟失數(shù)據(jù),特別是在像Windows這樣的多任務(wù)操作系統(tǒng)下.通常板卡完成A/D轉(zhuǎn)換后,將數(shù)據(jù)寫入到數(shù)據(jù)輸出寄存器中,接著使用中斷服務(wù)功能將數(shù)據(jù)傳輸?shù)紺PU/內(nèi)存。圖4-5 三種緩存區(qū)的使用方式FIFO內(nèi)部緩存區(qū)用戶緩存區(qū)DRV_FAIIntStartDRV_FAITransfer如果沒有FIFO功能,每次硬件完成A/D轉(zhuǎn)換后,會改寫保存在數(shù)據(jù)寄存器中的值,如果上次A/D的數(shù)據(jù)在新數(shù)據(jù)到來之前未被傳輸?shù)紺PU,那這個數(shù)據(jù)就丟失了。如果使用FIFO功能,新數(shù)據(jù)僅僅被添加到FIFO緩沖區(qū)的第二個位置上,而不會覆蓋原先的數(shù)據(jù)。隨后的數(shù)據(jù)會依次排列到緩沖區(qū)中。當(dāng)你想從FIFO緩沖區(qū)中搬移數(shù)據(jù)時

41、僅僅需要從數(shù)據(jù)寄存器種讀取一個數(shù)據(jù)即可,這樣將會將最初的數(shù)據(jù)取出,F(xiàn)IFO中的下以個位置的數(shù)據(jù)會取代數(shù)據(jù)寄存器中的值,你可以在任何時候傳輸來自FIFO緩沖區(qū)中的數(shù)據(jù),當(dāng)你在傳輸舊的數(shù)據(jù)時,硬件會將最新的數(shù)據(jù)保存在FIFO中,從而防止數(shù)據(jù)丟失。你也可以在FIFO半滿或全滿時,一次性的傳輸數(shù)據(jù)。由于這樣減少了CPU的時間,因此非常適合大量的高速數(shù)據(jù)傳輸。合理使用FIFO的方式:1) 軟件查詢方式下使用FIFO可以通過查詢狀態(tài)寄存器的狀態(tài)未來判斷FIFO緩沖區(qū)的狀態(tài),分別判斷空標(biāo)志位(Empty flag),半滿標(biāo)志位(Half full flag)以及全滿標(biāo)志位(full flag)的狀態(tài)。2)

42、中斷狀態(tài)下如何使用FIFO為何說FIFO可以防止數(shù)據(jù)丟失呢?通常情況下(沒有FIFO),硬件完成一次A/D轉(zhuǎn)換后就會向系統(tǒng)產(chǎn)生一次中斷請求,此時中斷服務(wù)程序會去傳輸數(shù)據(jù),現(xiàn)在問題產(chǎn)生了:如果此時有一個優(yōu)先級高的系統(tǒng)中斷請求,你的中斷服務(wù)程序會等待系統(tǒng)中斷服務(wù)結(jié)束才會繼續(xù)響應(yīng)。如果等待的時間過長,硬件會進(jìn)行下一次A/D轉(zhuǎn)換(如果采用硬件觸發(fā)方式,A/D轉(zhuǎn)的速度會很快),并且在你的中斷服務(wù)程序傳輸舊的數(shù)據(jù)之前改寫數(shù)據(jù)寄存器中的值。新的A/D轉(zhuǎn)換會有啟動你的中斷服務(wù)程序,而傳輸?shù)臄?shù)據(jù)是最新的采樣值。舊的數(shù)據(jù)已經(jīng)被新的數(shù)據(jù)覆蓋(丟失了)。FIFO功能解決了上述問題。FIFO緩沖區(qū)會存儲連續(xù)采樣的數(shù)據(jù),

43、如果中斷服務(wù)程序還未傳輸最初的采樣值,F(xiàn)IFO會將下一次采樣值放入到FIFO中的下一個位置。中斷方式下使用FIFO的方法與軟件查尋方法類似。4.1.7 內(nèi)部緩沖區(qū)的使用方式驅(qū)動程序在操作內(nèi)部緩沖區(qū)時是將內(nèi)部緩沖區(qū)分為上下兩半緩沖區(qū)來 分別操作。通過這樣來保證高速連續(xù)采集時,數(shù)據(jù)不會丟失。雙緩沖區(qū)模式,在工程上稱為“乒乓”緩沖區(qū)模式。跟常用的單緩沖區(qū)模式相比雙緩沖區(qū)模式的優(yōu)點是,它可以使用較小容量的內(nèi)存,不間斷地緩沖幾乎無限量的數(shù)據(jù)(輸入與輸出端需協(xié)同工作)。這種緩沖區(qū)模式的工作原理是:在內(nèi)存里開辟兩塊容量相等的緩沖區(qū)(以下將分別它們稱為第一緩沖區(qū)和第二緩沖區(qū))作為連續(xù)數(shù)據(jù)輸入的緩沖區(qū)。工作開始

44、時,數(shù)據(jù)采集卡首先將數(shù)據(jù)寫入第一緩沖區(qū)中,在數(shù)據(jù)采集卡開始把數(shù)據(jù)寫入第二緩沖區(qū)的同時,用戶程序可以根據(jù)自身需要取出第一緩沖區(qū)中的數(shù)據(jù)做特定的處理。當(dāng)?shù)诙彌_區(qū)被寫滿后,數(shù)據(jù)采集卡回到第一緩沖區(qū)的起始處,以覆蓋舊數(shù)據(jù)的方式,把新數(shù)據(jù)寫入第一緩沖區(qū)中;與此同時用戶程序取出第二緩沖區(qū)中的數(shù)據(jù)。整個數(shù)據(jù)采集處理過程可以如此不斷地循環(huán)進(jìn)行下去。在采集時驅(qū)動程序從寄存器中將數(shù)據(jù)傳輸?shù)絻?nèi)部緩沖區(qū)中,當(dāng)內(nèi)部緩沖區(qū)半滿時驅(qū)動 程序發(fā)出BufferChange事件。用戶通過執(zhí)行DRV_FAICheck函數(shù)返回的HalfReady來判斷是上半部分還是下半部分緩沖滿了,然后執(zhí)行DRV_FAITransfer來將相應(yīng)的

45、緩沖中的數(shù)據(jù)搬走。4.1.8 循環(huán)(cycle) 和非循環(huán)(no_cycle) 循環(huán)和非循環(huán)是指內(nèi)部緩沖區(qū)的使用方式。非循環(huán)方式下,內(nèi)部緩沖區(qū)作為一個整體使用。在非循環(huán)方式下執(zhí)行一次DRV_FAIIntScanStart/DRV_FAIIntStart函數(shù)只能進(jìn)行有限次(次數(shù)就是通過參數(shù)count設(shè)定的采樣個數(shù))的A/D轉(zhuǎn)換,DRV_FAIIntScanStart函數(shù)執(zhí)行過程中將所有數(shù)據(jù)都放到內(nèi)部緩沖區(qū);A/D轉(zhuǎn)換結(jié)束后,在 ADS_EVT_TERMINATED 事件的處理函數(shù)中再用DRV_FAITransfer函數(shù)將數(shù)據(jù)傳送到用戶緩沖區(qū)中。循環(huán)方式下,內(nèi)部緩沖區(qū)分為兩個半?yún)^(qū)使用。執(zhí)行一次DR

46、V_FAIIntScanStart/DRV_FAIIntStart函數(shù)可以進(jìn)行無限次的 A/D 轉(zhuǎn)換,直到調(diào)用DRV_FAI_Stop函數(shù)。這種方式下有限的內(nèi)部緩沖區(qū)不可能容納無限多的采集數(shù)據(jù)。因此,將內(nèi)部緩沖區(qū)分成前后對等的兩個半?yún)^(qū)。當(dāng)前半?yún)^(qū)填滿后產(chǎn)生一個ADS_EVT_BUFCHANGE事件,采集程序中的事件檢查循環(huán)捕獲這個事件,調(diào)用DRV_FAI_Transfer函數(shù)把數(shù)據(jù)傳送到用戶緩沖區(qū);與此同時DRV_FAIIntScanStart/DRV_FAIIntStart函數(shù)將新轉(zhuǎn)換的數(shù)據(jù)放到內(nèi)部緩沖區(qū)的后半部分。當(dāng)后半?yún)^(qū)填滿后再產(chǎn)生一個ADS_EVT_BUFCHANGE事件,并用DRV_F

47、AIIntScanStart/DRV_FAIIntStart函數(shù)將新轉(zhuǎn)換的數(shù)據(jù)放到數(shù)據(jù)傳輸完畢的前半緩沖區(qū),如此循環(huán)。4.1.9 Raw Data(原始數(shù)據(jù))和voltage(電壓值) PCI-1710L的轉(zhuǎn)換芯片是12位的,所以它可以把采集的電壓量程分為4096段,這種方式稱為量化,而Raw Data就是將被采集量量化后的整數(shù)值。驅(qū)動程序?qū)⒘炕涤?位十六進(jìn)制數(shù)表示,所以Raw Data的示數(shù)范圍就是000-fff,在內(nèi)部緩沖區(qū)中的數(shù)值就是這種量化的原始數(shù)據(jù)。用戶緩沖區(qū)中存放Voltage(電壓值),將Raw Data轉(zhuǎn)化為電壓值由CRVFAITransfer函數(shù)完成,當(dāng) PTFAITran

48、sfer 的DataType=0時,不進(jìn)行Raw Data到電壓值的轉(zhuǎn)化,這時候在用戶緩沖區(qū)中得到的就是量化的12位十六進(jìn)制整數(shù)值。4.2 軟件設(shè)計4.2.1 測試系統(tǒng)開發(fā)需要完成的任務(wù)本次測試系統(tǒng)的開發(fā)任務(wù)主要有兩個:一是根據(jù)具體情況確定信號連接方案,二是基于Windows,使用Microsoft Visual C+ 進(jìn)行光譜采集系統(tǒng)軟件的開發(fā),這是核心任務(wù)。軟件需要實現(xiàn)以下幾個功能:1) 使用數(shù)據(jù)采集卡的軟件開發(fā)工具包及LIB文件進(jìn)行通信,獲取所需光譜數(shù)據(jù);2) 光譜數(shù)據(jù)的采集后實時存儲(最終存儲至TXT文檔);3) 光譜數(shù)據(jù)的采集后實時畫圖顯示。4.2.2 程序的總體構(gòu)架圖4-3 程序的

49、設(shè)計步驟與基本框架數(shù)據(jù)存儲模塊數(shù)據(jù)采集制實時畫圖模塊人機交互模塊模塊整合與功能實現(xiàn)架構(gòu)設(shè)計及件裝配及調(diào)試影件連接模塊硬硬件裝配及調(diào)試是基于硬件的軟件程序設(shè)計的基礎(chǔ),程序設(shè)計的基本步驟與基本框架如圖4-3所示。本程序基于單文檔的文檔/視圖程序架構(gòu),運行各種命令與操作主要依靠菜單來實現(xiàn)。菜單由以下項目組成:1) 文件菜單內(nèi)含多個命令的彈出式菜單,包括四個用于處理文件的命令:新建、打開、保存、另存為;三個用于打印的命令:打印、打印預(yù)覽、頁面設(shè)置;最近處理過的文件列表以及退出程序的命令。2) 編輯菜單內(nèi)含多個命令的彈出式菜單,包括撤消命令;以及Windows剪貼板相關(guān)的剪切、復(fù)制、粘貼三個命令。3)

50、查看菜單彈出式菜單,包括用于顯示、取消狀態(tài)欄的命令。4) 采集卡設(shè)置菜單非彈出式命令菜單,用于打開采集卡設(shè)置對話框以設(shè)置采集卡參數(shù)。5) 采集菜單非彈出式命令菜單,用于啟動數(shù)據(jù)采集卡進(jìn)行數(shù)據(jù)采集。6) 圖形菜單內(nèi)含多個命令的彈出式菜單,包括用于處理圖形的整體縮放、局部放大、圖像顏色三個命令。7) 幫助菜單彈出式菜單,包含關(guān)于命令,用于打開一個顯示程序信息的對話框。人機交互模塊的編寫實際就是菜單界面編寫,因此最為簡單。很多功能都是菜單生成時自動添加的功能,因此只要添加“數(shù)據(jù)采集”下拉條,并添加“開始采集”和“停止采集”兩個按鈕分別進(jìn)行開啟和關(guān)閉數(shù)據(jù)采集卡的功能即可。4.2.3 數(shù)據(jù)采集及顯示程序

51、流程圖編寫基于研華PCI-1710L多功能數(shù)據(jù)采集卡的軟件程序,需要使用研華驅(qū)動程序提供的DLL(動態(tài)連接庫,Dynamic Linked Library)1)象編寫一般的Windows應(yīng)用程序一樣創(chuàng)建您的應(yīng)用程序代碼,在這些代碼中可以象典型的函數(shù)調(diào)用一樣調(diào)用研華驅(qū)動程序中提供的動態(tài)連接庫中(DLL)的函數(shù)。2)聲明在您的程序中用到的函數(shù),即:包含動態(tài)連接庫(DLL)的頭文件,該函數(shù)聲明了所有的動態(tài)連接庫中的函數(shù),如下所示:#include“driver.h”3)將動態(tài)連接庫的(DLL)的導(dǎo)入庫(例如,“ADSAPI32.LIB”)加到工程模塊中。在Visual C+環(huán)境下,只要按照流程圖就可

52、以完成數(shù)據(jù)的動態(tài)采集及顯示,中斷傳輸流程圖如圖4-4所示:使用的驅(qū)動函數(shù)說明:1) DRV_DeviceGetList:有多種硬件設(shè)備時,獲取設(shè)備列表。2) DRV_ DeviceOpen:打開指定的數(shù)據(jù)采集卡。3) DRV_EnableEvent:開啟事件響應(yīng)機制。4) DRV_FAIIntStart:開始中斷觸發(fā)方式的A/D轉(zhuǎn)換。5) DRV_CheckEvent:檢查是否有設(shè)定的事件發(fā)生。6) DRV_FAICheck :檢查A/D轉(zhuǎn)換的狀態(tài)。在本例中用于檢查究竟是內(nèi)部緩沖區(qū)的前半部分滿了,還是后半部分滿了。7) DRV_FAITransfer:將采集的數(shù)據(jù)從內(nèi)部緩沖區(qū)傳輸?shù)接脩艟彌_區(qū)。

53、8) DRV_FAITerminate:結(jié)束A/D轉(zhuǎn)換。9) DRV_DeviceClose :關(guān)閉指定的數(shù)據(jù)采集卡。10) Buffer Change Event:該事件表示內(nèi)部緩沖區(qū)已經(jīng)半滿。可以將這部分?jǐn)?shù)據(jù)傳輸?shù)接脩艟彌_區(qū)中。測試步驟:1)點擊“開始采集”按鈕,測試系統(tǒng)調(diào)用DRV_DeviceGetList函數(shù)獲取設(shè)備列表并選擇設(shè)備PCI-1710L數(shù)據(jù)采集卡;2)調(diào)用DRV_DeviceOpen函數(shù)啟動數(shù)據(jù)采集卡,并調(diào)用DRV_EnableEvent函數(shù)開啟事件響應(yīng)機制;3)調(diào)用DRV_FAIIntStart函數(shù)獲取數(shù)據(jù)采集所需要的參數(shù)設(shè)置,并開啟中斷響應(yīng)功能;4)進(jìn)入DRV_Chec

54、kEvent函數(shù)檢查是否有設(shè)定的事件發(fā)生,對應(yīng)是否有外部觸發(fā)脈沖引發(fā)的Interrupt事件出現(xiàn)(用戶打開波長手輪轉(zhuǎn)動開關(guān)進(jìn)行光譜測試),如果沒有外部脈沖出現(xiàn),則保持等待狀態(tài)。一旦觸發(fā)脈沖出現(xiàn)時,軟件就進(jìn)行A/D轉(zhuǎn)換并將原始數(shù)據(jù)存儲到內(nèi)部緩存區(qū),然后等待下一個當(dāng)觸發(fā)脈沖出現(xiàn)時再進(jìn)行A/D轉(zhuǎn)換,在這個過程中,當(dāng)內(nèi)部緩存區(qū)半滿或全滿會觸發(fā)BufferChange事件(如BufferChange事件發(fā)生,則調(diào)用DRV_FAICheck函數(shù)首先檢查內(nèi)部緩存區(qū)半滿還是全滿),之后調(diào)用DRV_FAITransfer函數(shù)將原始數(shù)據(jù)轉(zhuǎn)換為電壓數(shù)據(jù),并講轉(zhuǎn)換后的數(shù)據(jù)轉(zhuǎn)移至用戶緩存區(qū)。然后調(diào)用WriteData(

55、)函數(shù)選適當(dāng)?shù)臄?shù)據(jù)顯示并保存到“數(shù)據(jù)采集.txt”文檔中。軟件還要檢查光譜測試是否結(jié)束,如沒有結(jié)束則繼續(xù)進(jìn)入DRV_CheckEvent函數(shù)進(jìn)行事件檢查,重復(fù)上述步驟;如結(jié)束則調(diào)用DRV_FAITerminate函數(shù)停止A/D轉(zhuǎn)換,并釋放內(nèi)部緩存區(qū)和用戶緩存區(qū)的空間,最終調(diào)用DRV_DeviceClose函數(shù)關(guān)閉設(shè)備,采集完成。在光譜測試過程中,用戶還可隨時中斷采集,通過點擊“停止采集”按鈕,軟件產(chǎn)生Terminate事件而終止采集工作。要停止采集?DRV_FAICheckDRV_FAITransferWriteData()DRV_EnableEventDRV_FAITerminateDRV_

56、FAIIntStartDRV_CheckEventDRV_DeviceClose終止是否否是BufferChange發(fā)生?DRV_ DeviceOpen開始DRV_DeviceGetList圖4-4 數(shù)據(jù)采集及顯示程序流程圖要停止采集?DRV_FAICheckDRV_FAITransferWriteData()DRV_EnableEventDRV_FAITerminateDRV_FAIIntStartDRV_CheckEventDRV_DeviceClose終止是否否是BufferChange發(fā)生?DRV_ DeviceOpen4.2.4 數(shù)據(jù)采集模塊的編寫借助于研華公司提供設(shè)備驅(qū)動程序SDK,在編寫程序的時候可以合理并充分的使用SDK中的系統(tǒng)函數(shù),依前文所述,使用外部中斷觸發(fā)采集(采用循環(huán)方式)時使用的通常流程應(yīng)該是:1)使用DRV_DeviceO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論