版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 摘要1</b></p><p><b> 關鍵詞1</b></p><p><b> 1.前言2</b></p><p> 1.1 課題的背景及意義2</p>
2、;<p> 1.2 設計目標及內(nèi)容2</p><p> 2.系統(tǒng)的總體設計方案4</p><p> 2.1 系統(tǒng)的總體結構4</p><p> 2.2 GPIB概述4</p><p> 2.2.1 GPIB標準接口系統(tǒng)的基本特性4</p><p> 2.2.3 GPIB接口卡6&l
3、t;/p><p> 2.2.4 GPIB系統(tǒng)的特點7</p><p> 2.3 LabWindows/CVI簡介7</p><p> 2.3.1 LabWindows/CVI下虛擬儀器軟件的組成9</p><p> 2.3.2 LabWindows/CVI軟件的特點10</p><p> 2.4 Q838
4、4光譜儀11</p><p><b> 2.5 小結12</b></p><p> 3.系統(tǒng)的軟件設計方案12</p><p> 3.1 軟件界面設計12</p><p> 3.2軟件功能模塊的實現(xiàn)15</p><p> 3.2.1 主控模塊15</p><
5、;p> 3.2.2 數(shù)據(jù)采集模塊17</p><p> 3.2.3 數(shù)據(jù)分析模塊24</p><p> 3.2.4 圖形處理模塊25</p><p> 3.2.5 安裝文件的生成26</p><p> 4.光譜儀控制軟件的測試27</p><p> 4.1 圖表繪制27</p>
6、<p> 4.2 數(shù)據(jù)顯示部分27</p><p> 4.3 離線畫圖28</p><p> 4.4 圖形截取與保存28</p><p><b> 5.總結29</b></p><p><b> 致謝30</b></p><p><b&
7、gt; 參考文獻31</b></p><p> Abstract32</p><p> Key Words32</p><p> 基于GPIB卡的光譜信息自動采集、控制系統(tǒng)設計</p><p> 【摘要】:利用NI公司的GPIB數(shù)據(jù)采集卡建立虛擬儀器采集與控制系統(tǒng),在自動測試領域得到了廣泛的應用。此設計方案通過GP
8、IB數(shù)據(jù)采集卡實現(xiàn)計算機與Q8384光譜儀的連接?;贚abWindows/CVI設計光譜儀的圖形用戶界面(GUI),使用LabWindows/CVI編程實現(xiàn)計算機對光譜儀的實時控制。這樣可以充分利用LabWindows/CVI強大的測控功能,并實現(xiàn)大量實驗數(shù)據(jù)的測量與保存,可以離線分析數(shù)據(jù),操作方便,是對虛擬儀器技術的充分利用。</p><p> 【關鍵詞】:GPIB卡;光譜儀; LabWindows/CVI
9、</p><p><b> 1.前言</b></p><p> 1.1 課題的背景及意義</p><p> 本文的研究課題是“基于GPIB卡的光譜信息自動采集、控制系統(tǒng)設計”,來源于武器裝備部某項目。</p><p> 在科學實驗中,大量的數(shù)據(jù)測量與分析是非常必要的,而通過人工對這些數(shù)據(jù)進行記錄分析顯然是不現(xiàn)實的
10、,智能化儀器可以有效地解決這個問題。智能儀器與傳統(tǒng)儀器的最大區(qū)別是將儀器本身與計算機連接起來,再與相應軟件結合,這充分發(fā)揮了計算機的強大功能。</p><p> 本課題的主要目的是通過Q8384光譜儀分析光源的各種性能。光譜儀連接計算機是通過NI公司的GPIB接口卡。GPIB(General-Purpose Interface Bus通用接口總線)作為一種通用的接口總線以及在各種儀器、打印機等上大量應用。在進行
11、科學實驗時有時需對大量的實驗數(shù)據(jù)進行處理,很多數(shù)據(jù)和圖形需要保存,而儀器本身對數(shù)據(jù)的保存和分析功能是有限的,通過GPIB卡可以將儀器連接到計算機上。LabWindows/CVI是National Instruments公司推出的一套面向測控領域的軟件開發(fā)平臺。它以ANSI C為核心,將功能強大,使用靈活的C語言平臺與數(shù)據(jù)采集,分析和表達的測控專業(yè)工具有機地接和起來。它的集成化開發(fā)平臺,交互式編程方法,豐富的控件和庫函數(shù)大大增強了C語言的
12、功能,為熟悉C語言的開發(fā)人員建立檢測系統(tǒng)、自動測量環(huán)境、數(shù)據(jù)采集系統(tǒng)、過程監(jiān)控系統(tǒng)等提供了一個理想的軟件開發(fā)環(huán)境。在LabWindows/CVI平臺上開發(fā)的軟件可以實現(xiàn)對通過GPIB卡連接到計算機上的實驗儀器進行控制,這就是虛擬儀器技術的實際應用。這樣的軟件不僅可以實現(xiàn)光譜儀的大部分功能,而且還可以實時自動</p><p> 1.2 設計目標及內(nèi)容</p><p> 在LabWindo
13、ws/CVI開發(fā)平臺上設計與Q8384光譜儀相對應的控制軟件,實現(xiàn)的功能包括:建立計算機和光譜儀的連接;定時采集保存數(shù)據(jù),如波長、峰值功率、帶寬等;光譜儀顯示界面上圖形繪制;光譜儀操作界面上各個按鈕功能;對繪制的數(shù)據(jù)圖進行截屏;對保存數(shù)據(jù)進行離線畫圖等。</p><p> 本課題的主要目的是通過GPIB數(shù)據(jù)采集卡實現(xiàn)Q8384光譜儀與計算機連接,在LabWindows/CVI開發(fā)平臺上設計光譜儀的圖形用戶界面(
14、GUI),編程并生成相應的安裝軟件。通過這個軟件可以實現(xiàn)對光譜儀的控制并且可以采集光譜儀上的各種數(shù)據(jù),繪制圖形,保存數(shù)據(jù),同時保存的數(shù)據(jù)也可再次用軟件進行分析。課題的完成過程包括Q8384光譜儀說明書的學習,LabWindows/CVI開發(fā)平臺的熟悉,光譜儀界面的布局和相應軟件的開發(fā)。</p><p> 基于以上設計目標,主要設計內(nèi)容包括兩項:</p><p> 與Q8384光譜儀想對
15、應的圖形用戶界面(GUI)的設計,包括光譜儀上的控制按鈕,圖表和數(shù)據(jù)顯示窗口以及光譜儀與計算機連接按鈕。</p><p> 與圖形用戶界面項對應的回調(diào)函數(shù)程序的編譯,通過編程對從光譜儀上讀出的原始數(shù)據(jù)進行進一步處理,包括數(shù)據(jù)類型轉換,顯示和保存等。</p><p> 其中軟件設計是本課題的重點。從及光譜儀讀出來的數(shù)據(jù)是指數(shù)形式,每種數(shù)據(jù)前都有四個字母作為標識符且每個數(shù)據(jù)是用逗號分隔開的
16、,這要求設計出最佳的算法去編程來處理相應的數(shù)據(jù)。</p><p> 1.3 虛擬儀器概述</p><p> 在對大規(guī)模、集成化、智能化及數(shù)字化電子儀器需求愈加迫切的形勢下,計算機技術、儀器技術和通信技術相結合,產(chǎn)生了具有里程碑意義的新一代儀器—虛擬儀器(Virtual Instruments)。虛擬儀器技術是全新概念的最新一代測量儀器,自1987年誕生以來,與前幾代測試儀器相比,以前所
17、未有過的速度迅猛發(fā)展。以美國NI公司為代表的一批廠商已經(jīng)在市場上推出了基于虛擬儀器技術而設計的產(chǎn)品話儀器產(chǎn)品。虛擬儀器技術是計算機硬件資源,儀器硬件,數(shù)據(jù)分析處理軟件,通信軟件及圖形用戶界面(GUI)的有效結合,具有傳統(tǒng)儀器所具備的信號采集,信號處理分析,信號輸出等功能。其基本構成包括計算機,虛擬儀器軟件,硬件接口和測控儀器等。與傳統(tǒng)儀器相比,虛擬儀器的優(yōu)點是顯而易見的。①.融合了計算機強大的硬件資源,有效的解決了傳統(tǒng)儀器在數(shù)據(jù)處理,顯
18、示,儲存等方面的受限的問題。大大增強了儀器的功能。②.利用了計算機豐富的軟件資源。實現(xiàn)了部分儀器硬件的軟件化,節(jié)省了物質(zhì)資源,可以實時,直接地對測試的數(shù)據(jù)進行各種分析和處理,圖形用戶界面(GUI)便于操作。③.虛擬儀器技術具有方便,靈活的互聯(lián)能力,廣泛支持各種工業(yè)總線標準。因此,</p><p> 圖1-1 虛擬儀器系統(tǒng)的結構示意圖</p><p> 1.4 本文的主要內(nèi)容</p
19、><p><b> 本文的主要內(nèi)容有:</b></p><p> ?。?)說明了本課題的主要內(nèi)容,介紹了虛擬儀器的基本狀況。</p><p> ?。?)介紹了設計的系統(tǒng)組成,包括光譜儀、GPIB卡、LabWindows軟件等。</p><p> ?。?)詳細介紹整個軟件系統(tǒng)設計過程。</p><p>
20、; ?。?)用所設計的軟件系統(tǒng)進行測試,分析光譜儀上的數(shù)據(jù)并對結果進行分析。</p><p> ?。?)對課題做出總結,找出系統(tǒng)可以進一步改進的地方。</p><p> 2.系統(tǒng)的總體設計方案</p><p> 2.1 系統(tǒng)的總體結構</p><p> 如圖2-1所示,本套系統(tǒng)主要由四部分組成。包括了待測光源,光譜儀,GPIB接口卡,L
21、abWindows/CVI控制軟件。其中LabWindows/CVI控制軟件是本系統(tǒng)最關鍵的部分。</p><p><b> GPIB總線</b></p><p> 圖2-1 本系統(tǒng)采用GPIB接口總線一般組成</p><p> 2.2 GPIB概述</p><p> GPIB即通用接口總線(General Pu
22、rpose Interface Bus) 是國際通用的儀器接口標準。目前生產(chǎn)的智能儀器幾乎無例外地都配有GPIB標準接口。</p><p> 國際通用的儀器接口標準最初由美國HP公司研制,稱為HPIB標準。 1975年IEEE在此基礎上加以改進,將其規(guī)范化為IEEE488標準予以推薦。1977年IEC又通過國際合作命名為IEC625國際標準。此后,這同一標準便在文獻資料中使用了HPIB,IEEE488,GPI
23、B,IECIB等多種稱謂,但日漸普遍使用的名稱是GPIB。 </p><p> 2.2.1 GPIB標準接口系統(tǒng)的基本特性 </p><p> GPIB標準包括接口與總線兩部分:接口部分是由各種邏輯電路組成,與各儀器裝置安裝在一起,用于對傳輸?shù)男畔⑦M行發(fā)送、接收、編碼和譯碼;總線部分是一條無源的多芯電纜,用做傳輸各種消息。將具有GPIB接口的儀器用GPIB總線連接起來的標準接口總線系統(tǒng)
24、如圖2-1所示。 </p><p> 在一個GPIB標準接口總線系統(tǒng)中,要進行有效的通信聯(lián)絡至少有“講者”、“聽者”、“控者”三類儀器裝置。</p><p> 講者是通過總線發(fā)送儀器消息的儀器裝置( 如測量儀器、數(shù)據(jù)采集器、計算機等),在一個GPIB系統(tǒng)中,可以設置多個講者, 但在某一時刻,只能有一個講者在起作用。</p><p> 聽者是通過總線接收由講者發(fā)
25、出消息的裝置(如打印機、信號源等),在一個GPIB系統(tǒng)中,可以設置多個聽者,并且允許多個聽者同時工作。</p><p> 控者是數(shù)據(jù)傳輸過程中的組織者和控制者,例如對其他設備進行尋址或允許“講者”使用總線等??卣咄ǔS捎嬎銠C擔任,GPIB系統(tǒng)不允許有兩個或兩個以上的控者同時起作用。2.2.2 GPIB標準接口的總線結構 </p><p> GPIB總線是一條24芯電纜(如圖2-2所示)
26、,其中16條為信號線,其余為地線及屏蔽線。電纜兩端是雙列24芯疊式結構插頭。</p><p> 圖2-2 GPIB接口示意圖</p><p> 16條信號線按功能可分為三組:</p><p> 8條雙向數(shù)據(jù)總線(DIO1~DIO8)作用:傳遞儀器消息和大部分接口消息,包括數(shù)據(jù)、命令和地址。由于這一標準沒有專門的地址總線和控制總線,因此必須用其余兩組信號線來區(qū)
27、分數(shù)據(jù)總線上信息的類型。</p><p> 3條數(shù)據(jù)掛鉤聯(lián)絡線(DAV,NRFD和NDAC)作用:控制數(shù)據(jù)總線的時序,以保證數(shù)據(jù)總線能正確、有節(jié)奏地傳輸信息,這種傳輸技術稱為三線掛鉤技術(見表2.1)。 </p><p> 表2.1 3條數(shù)據(jù)掛鉤聯(lián)絡線</p><p> 5條接口管理控制線(ATN,IFC,REN,EOI和SRQ)作用:控制GP-IB總線接口
28、的狀態(tài)</p><p> 表 2.2 5條接口管理控制線功能</p><p> 2.2.3 GPIB接口卡</p><p> GPIB接口電路的接口卡插于計算機的PCI或ISA插槽內(nèi),作為控制聽者和講者的控制器,隨接口卡帶有IEEE 2488庫函數(shù),包括聽、講、控、并行點名、遠程控制等接口功能;此外,,一般還包括高級語言接口程序、硬件和軟件安裝檢查診斷和通用
29、管理程序等,極大方便了用戶利用高級語言進行自動測量系統(tǒng)的編程。GPIB 允許每臺IBM兼容機中安裝2塊接口卡,分別定義為GPIB0 和GPIB1,可管理一套包括一臺計算機和最多30臺儀器的大型綜合測試系統(tǒng)。</p><p> GPIB接口板由GP IB適配器芯片、PC總線地址譯碼器, 以及母線驅(qū)動器/收發(fā)器、緩沖區(qū)、DMA通道等組成,其核心是GPIB適配器芯片,一般具有10 種GPIB 接口功能。由于數(shù)據(jù)傳方式
30、采用三線掛鉤技術,故在循環(huán)中允許工作速率相差懸殊的器件通過母線雙向、異步通信。原理圖如圖2-3所示。</p><p> 圖2-3 GPIB接口卡原理</p><p> 2.2.4 GPIB系統(tǒng)的特點</p><p> 一個GPIB系統(tǒng)具有以下四個特點:</p><p> 接口編程方便, 減輕了軟件的設計負擔, 可使用高級編程語言。&
31、lt;/p><p> 提高了儀器設備的性能指標, 利用計算機對帶有GPIB 接口的儀器實現(xiàn)操作和控制, 可實現(xiàn)系統(tǒng)的自校準、自診斷等要求, 從而提高了測量精度。</p><p> 便于將多臺帶有GPIB 總線的儀器組合起來,形成較大的測試系統(tǒng), 高效靈活的完成各種不同的測試任務, 而且組建和拆卸靈活, 使用方便。</p><p> 便于擴展傳統(tǒng)儀器的功能, 由于儀
32、器與計算機相連, 因此, 可在計算機的控制下對測試數(shù)據(jù)進行更加靈活、方便的傳輸、處理、綜合、利用和顯示, 使原來儀器采用硬件邏輯很難解決的問題迎刃而解。</p><p> 2.3 LabWindows/CVI簡介</p><p> 目前可用于虛擬儀器開發(fā)的軟件可以分為如下兩大類,它們都包含界面設計模塊和功能函數(shù)設計模塊。</p><p> 文本式編程語言。如:
33、Visual C++,Visual BASIC,Java,C++ Builder,LabWindows/CVI等。</p><p> 圖形化編程語言。如:LabVIEW,HP/VEE等。</p><p> 當前在對虛擬儀器進行軟件系統(tǒng)開發(fā)上,主流軟件平臺是LabWindows/CVI,LabView。LabVIEW是建立在Windows CNT/3.1/95/98/2000基礎上的圖形
34、化儀器開發(fā)系統(tǒng)(也可用于Mao OS,Sun,HP-UX等)。用LabVIEW編寫的儀器軟面板,其界面友好操作簡單直觀;與傳統(tǒng)文本語言相比、用LabVIEW編程易學易懂省時省力,可以節(jié)省大量系統(tǒng)開發(fā)時間,即使對于沒有文本語言基礎的非軟件工程師來說也可以很快學習、掌握并應用LabVIEW來開發(fā)虛擬儀器。LabVIEW是一個完全的開放的儀器開發(fā)系統(tǒng),利用它可以構成任意形式的虛擬儀器,如GPIB、VXI、PXI、串行系統(tǒng)、PLC和插入式數(shù)據(jù)采
35、集系統(tǒng)等,并可通過互聯(lián)網(wǎng)與其它數(shù)據(jù)源連接進行動態(tài)數(shù)據(jù)交換,還可以在LabVIEW中嵌入ActiveX控件。從其它開發(fā)環(huán)境調(diào)用LabVIEW的源代碼,或用LabVIEW以動態(tài)鏈接庫的形式在 Windows下或在其它平臺下以分享庫的形式調(diào)用現(xiàn)存代碼。</p><p> LabWindows/CVI是一個完全的ANSI C開發(fā)環(huán)境,用于儀器控制、自動檢測、數(shù)據(jù)處理的應用軟件。它以ANSI
36、;C為核心,將功能強大、使用靈活的C語言平臺與用數(shù)據(jù)采集、分析和顯示的測控專業(yè)工具有機結合起來。它的交互式開發(fā)平臺、交互式編程方法、豐富的功能面板和函數(shù)庫大大增強了C語言的功能,為熟悉C語言的開發(fā)人員激勵自動化檢測系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、過程控制系統(tǒng)等提供了一個理想的軟件開發(fā)環(huán)境。LabWindows/CVI軟件把C語言的有力與柔性同虛擬儀器的軟件工具庫結合起來,包含了各種總線、數(shù)據(jù)采集和分析庫。同時,LabWindows/CVI軟件提供了
37、國內(nèi)外知名廠家生產(chǎn)的三百多種儀器的驅(qū)動程序。LabWindows/CVI軟件的重要特征就是在Windows和Sun平臺上簡化了圖形用戶接口的設計,使用戶很容易的生成各種應用程序,并且這些應用程序可以在不同的平臺上移植。</p><p> LabWindows/CVI是為C語言程序員提供的軟件開發(fā)環(huán)境,在其交互式開發(fā)環(huán)境中編寫的程序必須符合標準C語言的規(guī)范。使用LabWindows/CVI可以完成如下工作:<
38、;/p><p> 交互式的程序開發(fā)(圖2-4所示)。</p><p> 具有功能強大的功能庫,用來創(chuàng)建數(shù)據(jù)采集和儀器控制的應用程序。</p><p> 充分利用完備的軟件工具進行數(shù)據(jù)采集、分析和顯示。</p><p> 利用向?qū)ч_發(fā)IVI儀器驅(qū)動程序和創(chuàng)建ActiveX服務器。</p><p> 為其他程序開發(fā)C
39、目標模塊、動態(tài)鏈接庫(DLL)、C語言庫。</p><p> LabWindows/CVI的功能強大在于它提供了豐富的函數(shù)庫,利用這些函數(shù)庫不僅可以實現(xiàn)常規(guī)的程序設計,還可以實現(xiàn)更加復雜的數(shù)據(jù)采集和儀器控制系統(tǒng)的開發(fā),其中比較重要的函數(shù)庫如圖所2-5示。</p><p> 圖2-4 LabWindows/CVI的編程窗口</p><p> 儀器庫是LabWi
40、ndows/CVI的特殊資源,它包括GPIB、VXI和RS-232儀器的驅(qū)動程序,如示波器、多用表和函數(shù)發(fā)生器,每個驅(qū)動程序都提供可編輯的源代碼。使用LabWindows/CVI開發(fā)工具提供的函數(shù)庫可以創(chuàng)建自己的儀器驅(qū)動程序,在創(chuàng)建儀器驅(qū)動程序中可以使用LabWindows/CVI的其他函數(shù)庫。</p><p><b> 儀器庫</b></p><p> GPIB
41、/GPIB488.2庫</p><p><b> RS-232庫</b></p><p><b> VISA庫</b></p><p><b> VXI庫</b></p><p><b> 數(shù)據(jù)采集庫</b></p><p>
42、; EasyI/O for DAQ庫</p><p><b> 格式化和I/O庫</b></p><p><b> 分析庫和高級分析庫</b></p><p><b> 用戶界面庫</b></p><p> 動態(tài)數(shù)據(jù)交換(DDE)庫</p><p&
43、gt; 傳輸控制協(xié)議(TCP)庫</p><p><b> ActiveX庫</b></p><p> DataSocket庫</p><p><b> 標注C函數(shù)庫</b></p><p> 圖2-5 LabWindows/CVI函數(shù)庫</p><p> 2.
44、3.1 LabWindows/CVI下虛擬儀器軟件的組成</p><p> 在虛擬儀器技術當中“軟件”是其核心,虛擬儀器軟件框架從底層到頂層分為VISA庫,儀器驅(qū)動程序和應用軟件。系統(tǒng)的人機界面、參數(shù)的輸入、采集數(shù)據(jù)實時顯示、數(shù)據(jù)存儲和回放、信號處理與分析及智能診斷等都是通過軟件實現(xiàn)的。</p><p> 在LabWindows/CVI軟件平臺中,設計完成的虛擬軟件組成框圖如圖2-6所
45、示。從軟件組成框圖中可以看出,對于用LabWindows/CVI編寫的虛擬儀器,其軟件的文件基本類型有如下五類。</p><p> 1)*.prj文件 </p><p> 它是工程文件,主要有*.uir文件,*.c文件,*.h文件和*.fp文件組成。</p><p> 圖2-6 用LabWindows/CVI設計的虛擬儀器軟件組成框圖</p>&
46、lt;p><b> 2)*.c文件 </b></p><p> 它是源程序文件,此文件為標準的C語言程序文件。文件有三部分組成:頭文件(*.h),主程序文件(Main)和回調(diào)函數(shù)(Callback),其結構和C語言的結構一致。</p><p><b> 3)*.uir文件</b></p><p> 它是用戶界
47、面文件,該文件為虛擬儀器的面板文件,類似VB或VC中的窗體文件。該文件中可包含儀器面板中的各類控件,如旋鈕,開關等。每個控件有自己的屬性,如旋鈕的刻度等。同時控件還有事件,當用鼠標單擊控件或用鍵盤改變控件時,單擊事件發(fā)生,調(diào)用相應的回調(diào)函數(shù),完成相應的儀器功能。</p><p><b> 4)*.h文件</b></p><p> 它是頭文件,與C語言中的*.h文件
48、結構完全一致。在LabWindows/CVI中,*.h文件是自動生成的,當設計完*.uir文件后,保存*.uir文件時自動生成*.h文件。</p><p><b> 5)*.fp文件</b></p><p> 它是代表已有的儀器文件或子文件。</p><p> 2.3.2 LabWindows/CVI軟件的特點</p>&l
49、t;p> LabWindows/CVI將源代碼編輯,32位ANSI C編譯,鏈接,調(diào)試以及標準ANSI C庫集成在一個交互式開發(fā)環(huán)境中。用戶可以快速地編寫,調(diào)試和修改虛擬儀器應用程序,形成可執(zhí)行文件。使用LabWindows/CVI設計的虛擬儀器應用程序可脫離LabWindows/CVI開發(fā)環(huán)境獨立運行,用戶最終看見的是和實際的硬件儀器相似的操作面板。和其他虛擬儀器開發(fā)工具相比,LabWindows/CVI具有如下的特點。<
50、;/p><p> 由于LabWindows/CVI的編程技術主要采用事件驅(qū)動與回調(diào)函數(shù)方式,編程方法簡單易學。</p><p> 圖2-7 工程窗口的菜單</p><p> 運用LabWindows/CVI進行軟件設計師以工程文件為主體框架,包含了C語言源代碼文件(*.c),頭文件(*.h)和用戶界面文件(*.uir)三部分,全部軟件調(diào)試好后,可將工程文件編譯生成
51、可執(zhí)行文件(*.exe)。</p><p> 包含DAQ,GPIB,PXI,VXI,RE-232/485等各種儀器通訊總線標準的所有功能函數(shù)。不懂得總線標準的開發(fā)者也能夠驅(qū)動不同總線標準接口設備與儀器。</p><p> 圖2-8 用戶界面編輯窗口</p><p> 2.4 Q8384光譜儀</p><p> Q8384是為評估DWD
52、M性能而開發(fā)的一種光譜分析儀(如圖2-9所示)。它采用新型的單色儀表,用分散分光方式初次實現(xiàn)了10pm(0.01nm)波長分辨率的光頻譜分析。由于其波長精度高、動態(tài)范圍寬,可以用來測量光傳送系統(tǒng)的光信號噪聲系數(shù)(OSNR)、光纖放大器的NF以及DWDM濾光器的波長損耗等特性。此光譜儀有GPIB接口來連接計算機。</p><p> 圖2-9 Q8384光譜儀</p><p><b&
53、gt; 2.5 小結 </b></p><p> 以上主要介紹了系統(tǒng)中最重要的兩部分GPIB總線及LabWindows/CVI軟件,設計好的控制軟件的可以通過GPIB總線向光譜儀發(fā)送控制指令,讀取數(shù)據(jù)等。</p><p> 3.系統(tǒng)的軟件設計方案</p><p> 軟件系統(tǒng)的整體設計包括軟件界面和源程序代碼兩部分。軟件是根據(jù)需求分析而設計,對不同
54、的功能采用不同的模塊。軟件的模塊框圖如圖3-1所示。</p><p> 圖3-1 軟件模塊框圖</p><p> 3.1 軟件界面設計</p><p> 儀器的顯示面板被稱為面板。它模擬一臺實際儀器的面板,類似其它編程語言中的窗體,同時他也是一個對象。在面板中可以包括被稱為控件的旋鈕,按鈕,圖表以及其它控制器和指示器等對象。面板是虛擬儀器輸入和輸出數(shù)據(jù)的接口,
55、用戶可以直接用鼠標或鍵盤輸入數(shù)據(jù)或改變儀器的功能。面板是可視的,有一個圖標和它相對應。軟件界面的設計可以根據(jù)模塊來設置軟件的界面。</p><p> 在LabWindows/CVI中,我們首先要創(chuàng)建一個面板,這就相當于一臺實際儀器的面板,再在面板上設置控件,相當于實際儀器面板上的各個按鈕,旋鈕等部件。LabWindows/CVI的用戶界面編輯窗口如圖2-8所示。要對面板的屬性進行設置(如圖3-2)。</p
56、><p> 圖 3-2 面板屬性設置窗口</p><p> 在LabWindows/CVI中有各種各樣的控件供我們選擇。具體如圖3-3所示?;镜目丶愋陀形谋究?、列表框、樹控件、表格控件、定時器控件、命令按鈕控件、圖表控件和Splitter控件等。</p><p> 圖 3-3 LabWindows/CVI建立圖形控件的菜單</p><p&g
57、t; Q8384光譜儀的前面板如圖2-9所示,前面板包括10部分:LCD顯示部分、功能鍵部分、光標部分、測量部分、數(shù)據(jù)部分、顯示部分、數(shù)據(jù)輸出部分、GPIB部分、連接部分、電源開關/磁盤驅(qū)動部分。</p><p> 由于各個部分的按鍵被按下之后會在LCD右邊顯示出子鍵,按下與這些子鍵盤對應的軟鍵就可以實現(xiàn)相應的功能。例如:按下“CENTER”鍵之后會有“CENTER”,“PEAK”,“CURSOR”,“AUT
58、OPKC”子鍵出現(xiàn)。這就要求在設計用戶界面的時候除了要設計出前面板上的各個鍵之外,還要想辦法設計出與之對應的子鍵。當按下這主面板上的建之后會彈出另外一個面板,在這個面板上有與主鍵對應的子鍵,具體功能實現(xiàn)方法見程序設計部分。</p><p> 最終生成的光譜儀控制軟件主面板如圖3-6所示。同時生成的還包括十幾個彈出式子面板。主面板上控件的分布包括了四部分。①. 參數(shù)設置的部分,在這部分中主要分布設置光譜儀參數(shù)的案
59、件,如:Center,Span,Aerage等。②. 掃描部分,在這部分中主要通過人工或定時掃描來讀取光譜儀顯示部分是數(shù)據(jù)。③. 顯示部分,包括兩個顯示窗口,一個用來顯示光譜儀中主顯示屏的圖形,另一個顯示窗口是為了分析某些數(shù)據(jù)而設計的,如波長、帶寬等。④. 其它部分,主要包括了截圖、離線畫圖、連接設備等功能。</p><p> 圖 3-4 按鈕控件屬性設置窗口</p><p> 事件
60、是控件對象所產(chǎn)生的行動,例如,當用鼠標點擊控件時,就有相應的鼠標點擊事件發(fā)生。在LabWindows/CVI中,當事件發(fā)生時激發(fā)對應的回調(diào)函數(shù),由函數(shù)完成對應的功能。如圖3-5所示。</p><p> 回調(diào)函數(shù)實際上就是C語言中由用戶特殊定義的外部函數(shù),只不過函數(shù)的結構有一些特殊規(guī)定。屬性和事件是對象的基本元素,在LabWindows/CVI中可以通過對象的這兩個元素來操縱盒控制對象。</p>&
61、lt;p><b> 作用于產(chǎn)生</b></p><p> 圖 3-5 說明事件過程的框圖</p><p> 圖 3-6光譜儀控制軟件主界面</p><p> 3.2軟件功能模塊的實現(xiàn)</p><p> 3.2.1 主控模塊</p><p> 主控模塊控制整個軟件的運行,包括創(chuàng)面
62、板的初始化、光譜儀的連接。</p><p> 在LabWindows/CVI中生成的主函數(shù)一般具有如圖3-7所示的結構。主函數(shù)是程序的入口包含初始化運行庫,裝載用戶面板,刪除面板,關閉運行時庫等操作。在這里的主函數(shù)如下:</p><p> static int mainpnl;</p><p> int main (int argc, char *argv[]
63、)</p><p> {if (InitCVIRTE (0, argv, 0) == 0)return -1;初始化CVI運行時序</p><p> DisableBreakOnLibraryErrors ();</p><p> if ((mainpnl = LoadPanel (0, "光譜儀.uir", MAINPNL)) <
64、 0)return -1;</p><p> 將用戶界面文件載入內(nèi)存中。函數(shù)原型為:</p><p> DisplayPanel (mainpnl); 在屏幕上顯示面板</p><p> SetCtrlAttribute (mainpnl, MAINPNL_TIMER, ATTR_ENABLED, 0);</p><p> SetCt
65、rlAttribute (mainpnl, MAINPNL_TIMER_R, ATTR_ENABLED, 0);</p><p> 兩個SetCtrlAttribute的作用是設置兩個定時器不響應控件的回調(diào)函。</p><p> RunUserInterface ();運行用戶界面</p><p> DiscardPanel (mainpnl); 從內(nèi)存中刪除
66、面板及其子面板,并在屏幕中清除</p><p><b> return 0;</b></p><p><b> }</b></p><p> 圖3-7 主函數(shù)一般流程</p><p> 為了區(qū)分連接到計算機上的每個GPIB設備,我們要給每個設備設一個地址,相當于網(wǎng)絡中的IP地址,當然這里的地
67、址沒有IP那么復雜,一個整數(shù)就可以代表。我們可以用一個Numeric控件來輸入要連接的GPIB設備地址,再通過函數(shù)int GetCtrlVal (int panelHandle, int controlID, void *value); panelHandle為面板句柄,該項是在函數(shù)loadPanel里設置的;Control_ID;*value控件的值,該數(shù)據(jù)類型與控件本身的數(shù)據(jù)類型一致。讀取地址到變量中。</p><
68、;p> 在與GPIB設備通信之前必須首先打開GPIB設備,這包括OpenDev,ibfind和ibdev函數(shù)。Ibfind函數(shù)查找相應的GPIB板和設備,比如輸入“gpib0”表示GPIB0,返回設備的唯一描述符;打開設備也可以通過ibdev函數(shù),該函數(shù)可以設置GPIB的參數(shù),函數(shù)原型為:</p><p> Int ibdev(int Board_Idex, int Primary_Adreess,in
69、t Secondary_Address,e</p><p> Int Timeout_Value,int END_Message,int EOS_Character);</p><p> 在這里我們將這個函數(shù)設置如下:</p><p> device = ibdev (0, address, NO_SAD, T10s, 1, 0); </p>
70、<p> 其中的返回值為為GPIB設備的標識符。向GPIB設備讀/寫數(shù)據(jù)都用這個標識符。 </p><p> 向GPIB設備發(fā)送指令,我們是通過函數(shù)ibwrt,具體函數(shù)為:</p><p> ibwrt(device,"*IDN?",strlen("*IDN?")); </p><p> device是被
71、發(fā)送命令的設備的地址,發(fā)送命令與具體的儀器有關,可以通過文本框輸入。一般情況下所以在GPIB儀器都會支持"*IDN?"的命令,向儀器發(fā)送檢查ID名的命令,則儀器輸出自己的ID號。這里"*IDN?"就是一個命令字符串。strlen("*IDN?")的作用是統(tǒng)計字符串中字符個數(shù)。</p><p> 一般在調(diào)用完一個函數(shù)之后要檢查一些狀態(tài)信息,check_e
72、rror()函數(shù)用來檢測在設備連接狀態(tài)下的運行情況。具體函數(shù)如下:</p><p> void check_error(void) </p><p> { if (ibsta & 0x8000)</p><p> { SetCtrlVal (mainpnl, MAINPNL_STATUS, 1);</p><
73、p> SetCtrlVal (mainpnl, MAINPNL_ERR, iberr);</p><p><b> }else</b></p><p> { SetCtrlVal (mainpnl, MAINPNL_STATUS, 0);</p><p> SetCtrlVal (mainpnl, MAINPNL_ERR, 0
74、);</p><p><b> }}</b></p><p> 如果ibsta & 0x8000為1標明運行狀態(tài)出錯,這是點亮LED燈變紅色提示出錯,同時在控件Error Code中設置信息“iberr”,作為提示。如果ibsta & 0x8000不為1,運行狀態(tài)正常,這事LED燈不變色,控件Error Code中設置的信息為0。整個連接流程如圖3
75、-8所示。</p><p><b> 否</b></p><p><b> 是</b></p><p> 圖 3-8 連接設備流程圖</p><p> 3.2.2 數(shù)據(jù)采集模塊</p><p> 數(shù)據(jù)采樣模塊控制信號的采集過程,按照用戶設置的采樣速率,采集卡定時對信
76、號進行采樣,并可以將采集的數(shù)據(jù)進行顯示并存儲到計算機中。主要包括三個子模塊:</p><p> ?、?采樣參數(shù)設置模塊 本模塊的主要功能是設置光譜儀的各種參數(shù),參數(shù)設置按鍵在面板上的分布如圖3-9所示。在講具體的參數(shù)設置之前先介紹彈出式子面板的設計方案。</p><p> 圖 3-9 軟件主面板上參數(shù)設置部分</p><p> 前面已經(jīng)提到,因為光譜儀前面板上很
77、多按鍵被按下之后會有很多子鍵,這就要求設計的時候能有個彈出式的子面板,按下主面板上的按鍵之后會彈出相應的子面板,與主面板上的按鍵相應的子鍵會出現(xiàn)在這個子面板上。</p><p> 剛開始設計這個功能一直以為用的是彈出式面板那些函數(shù)就可以實現(xiàn),如:MessagePopup,Generic Message Popup,Prompt Popup等函數(shù),但是最后發(fā)現(xiàn)這樣是不可行的,因為這些彈出式面板中的按鍵的數(shù)目都是固
78、定的,根本不符合我們的要求。最后設計了設計子面板,再初始化。與主面板不同的是,子面板的初始化需要一個響應事件,或者說主面板上的鍵有一個對應的回調(diào)函數(shù),用這個回調(diào)函數(shù)來初始化子面板。下面以CENTER鍵的回調(diào)函數(shù)為例子來進行說明,程序如下:</p><p> int CVICALLBACK Center (int panel, int control, int event,</p><p>
79、; void *callbackData, int eventData1, int eventData2)</p><p><b> { </b></p><p> char read_center[200];</p><p> if(event==EVENT_COMMIT)</p><p> { if(
80、(CenterPnl = LoadPanel (0, "光譜儀.uir", CENTERPNL)) < 0 )</p><p> return -1; </p><p> { HidePanel (discard_panel); </p><p> discard_panel= CenterPnl;</p>&
81、lt;p> DisplayPanel(CenterPnl); </p><p><b> } }</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> 這就是CRNTER鍵的相應回調(diào)函數(shù),和主函數(shù)中
82、的LoadPanel函數(shù)一樣,這個函數(shù)中的LoadPanel函數(shù)也是將界面裝載到內(nèi)存中,只不過這次裝載的是這個子面板。HidePanel函數(shù)的目的是隱藏上次出現(xiàn)的子面板。discard_panel就是上次出現(xiàn)的面板的句柄。discard_panel= CenterPnl的作用是將這次出現(xiàn)的面板的句柄賦給discard_panel,供下次使用。DisplayPanel(CenterPnl)函數(shù)的作用和在主函數(shù)中一樣,在這里是將子面板顯示到
83、屏幕上。</p><p> 參數(shù)設置部分鍵比較多,但每個設置的方式都差不多。在這里我們介紹CENTER設置部分。</p><p> CENTER面板 如圖3-10所示CRNTER鍵用于設置波長或者頻率,單位選擇控件用于選擇參數(shù)的單位,其左邊的控件輸入數(shù)據(jù)。兩者與”CEN”命令結合之后可以構成一個完整的命令發(fā)送至儀器。PEAK鍵通過回調(diào)函數(shù)將峰值波長移動至中心,CURSOR將光標移到至
84、中心。 AUTO_PKC功能是通過Binary Switch控件完成的,就是開與關功能的轉換。</p><p> 圖3-10 CENTER面板</p><p> ?、?數(shù)據(jù)采集與保存 GPIB卡本身就是一個數(shù)據(jù)采集卡,所以數(shù)據(jù)采集的功能是最重要的。這里做詳細的敘述。前面已經(jīng)說明了怎樣連接GPIB設備,成功連接完設備之后就可以向設備發(fā)送指令,讀取其中的數(shù)據(jù)。</p><
85、;p> 首先向GPIB設備發(fā)送指令,我們是通過函數(shù)ibwrt,具體函數(shù)為:</p><p> ibwrt(device,"*IDN?",strlen("*IDN?")); </p><p> device是被發(fā)送命令的設備的地址,發(fā)送命令與具體的儀器有關,可以通過文本框輸入。一般情況下所有GPIB儀器都會支持"*IDN?&qu
86、ot;命令,向儀器發(fā)送檢查ID名的命令,則儀器輸出自己的ID號。這里"*IDN?"就是一個命令字符串。strlen("*IDN?")的作用是統(tǒng)計字符串中字符個數(shù)。</p><p> 從GPIB設備讀取數(shù)據(jù),這里用的函數(shù)是:ibrd,具體函數(shù)為:</p><p> ibrd(device,read_center,200);</p>&
87、lt;p> 和發(fā)送指令的函數(shù)一樣,device是設備的地址,read_cente是事先定義好的字符串數(shù)組,從設備讀出來的數(shù)據(jù)就保持在這個字符串中,200是該字符串的長度。這里讀取的數(shù)據(jù)都是指數(shù)形式的,所以要進行進一步的處理。</p><p> 表 3.1 從Q8384光譜儀讀出的數(shù)據(jù)的一般格式</p><p> 如表3.1所示,從Q8384光譜儀讀出的數(shù)據(jù)的一般格式包括四個部
88、分:</p><p> Header頭字母部分,每個命令不同所以頭字母也就不同,用來區(qū)分不同的數(shù)據(jù),長度為4,處理數(shù)據(jù)的時候應該將頭字母刪除。</p><p> Data數(shù)據(jù)部分,這部分數(shù)據(jù)一般是指數(shù)形式的,這部分是我們要提取的。</p><p> DS分隔符,一般用的都是逗號來分隔數(shù)據(jù)。</p><p> Terminetor部分,
89、數(shù)據(jù)終結符號。</p><p> 以上格式是從光譜儀讀出的一般格式,每個命令讀出的數(shù)據(jù)還有一點區(qū)別,所以處理</p><p> 數(shù)據(jù)的時候要具體情況具體分析。我們這里主要研究三種數(shù)據(jù):1 顯示面板上X,Y軸的數(shù)據(jù),2,OSW 這個命令讀出來的數(shù)據(jù)包括中心波長,帶寬和峰值的個數(shù)。3,OSD這個命令讀出的是峰值波長和和功率。每種數(shù)據(jù)輸出的形式不同,所以要采取不同的方式去處理。</p&
90、gt;<p> ?。?)顯示面板上數(shù)據(jù)讀取。X軸數(shù)據(jù)的讀出命令是“OSD1”,Y軸數(shù)據(jù)的讀出命令是“OSD0”。X軸數(shù)據(jù)的讀出如下:</p><p> LMUM +1.523200E-06,+1.523300E-06,+1.523400E-06,+1.523500E-06 ......</p><p> 后面的數(shù)據(jù)比較多,這里只列出一部分來說明問題。對這個原始的輸出數(shù)據(jù)我
91、們要分布處理,首先應該先刪除前面四個標識符字母。這里使用的自己定義的函數(shù)void cut(char *s, char *r),函數(shù)原型如下:</p><p> void cut(char *s, char *r)</p><p> {char mid[100]="";</p><p> int m=0; int len=0;int i;&
92、lt;/p><p> len=strlen(s);</p><p> for(i=4;i<=len;i++)</p><p><b> {</b></p><p> mid[m]=s[i];</p><p><b> m++;}</b></p>&l
93、t;p> strcpy(r,mid);}</p><p> 通過這個函數(shù)可以刪除前四個字母。具體過程是讀出X軸數(shù)據(jù)的原始字符串長度len,刪去原始字符串的前四個字符,從原始字符串的第五個數(shù)據(jù)開始讀取,將讀取的值賦給另外一個字符串,直到讀完原始字符串的所有值。這樣就可以實現(xiàn)刪除前四個字符的目的。</p><p> 從帶有逗號的字符串中提取數(shù)字值需要另外一個函數(shù)。這里我們定義為:&
94、lt;/p><p> long x_seperate(char *ss,double *ff,long len_x) 具體函數(shù)如下:</p><p> long x_seperate(char *ss,double *ff,long len_x) </p><p> { int i=0; int len_s; char mid[20000]=&quo
95、t; ";int m=0;</p><p> len_s=strlen(ss);len_x=0;</p><p> for(i=5;i<=len_s;i++)</p><p> { if(ss[i]==','||i==len_s-1)</p><p> { ff[len_x]=atof(mid)*100
96、0000;</p><p> if(ff[len_x]/1000>=1)</p><p> {ff[len_x]/=1000;}</p><p><b> len_x+=1;</b></p><p><b> m=0;}</b></p><p><b&g
97、t; else</b></p><p> { mid[m]=ss[i];</p><p><b> m+=1;</b></p><p><b> } }</b></p><p> return len_x;</p><p><b> }<
98、;/b></p><p> 這個函數(shù)的具體過程是從字符串的第一值開始給另外一個字符串賦值,當遇到逗號的時候不給另外一個字符串賦值,乘1000000的目的是轉換單位,去除后面的指數(shù)。這樣最終得到的數(shù)據(jù)就是一個只有X數(shù)據(jù)的字符串,在作圖的時候就很容易了。</p><p> 進一步處理 否 </p><
99、;p> 是 </p><p> 圖3-11數(shù)據(jù)讀取流程圖</p><p> Y軸數(shù)據(jù)的處理和X軸的數(shù)據(jù)是一樣的,唯一的不同之處是Y軸的數(shù)據(jù)在進行處理的時候不需要乘1000000。len_x是最終的數(shù)據(jù)個數(shù)。</p><p> 整個過程的流程圖如圖3-11所示。</p><p> ?。?)波長,帶寬
100、等數(shù)據(jù)采集。 “OSW?”命令讀出來的數(shù)據(jù)和X,Y軸的數(shù)據(jù)有所不同,是如下形式:</p><p> LMCN+1.551535E-06,LMHW+24.01663E-09,NOSP0002</p><p> 這里需要用分解字符串函數(shù),先將三個數(shù)據(jù)以逗號為標志分開,然后再刪除每個數(shù)據(jù)前面的標識符,乘上相應的倍數(shù)化簡指數(shù)。</p><p> 分解字符串的函數(shù)形式如
101、下:</p><p> void r_tran(char *s,char *r,char *dr,char *pk)</p><p> { char *p;</p><p> p=strtok(s,",");</p><p><b> if(p)</b></p>&l
102、t;p> strcpy(r,p);</p><p> p=strtok(NULL,",");</p><p><b> if(p)</b></p><p> strcpy(dr,p);</p><p> p=strtok(NULL,",");</p>
103、<p><b> if(p)</b></p><p> strcpy(pk,p);</p><p><b> }</b></p><p> 函數(shù)中的strtok(s,",")為分解字符串函數(shù), s為要分解的字符串, 逗號為分隔符字符串。首次調(diào)用時,s指向要分解的字符串,之后再次調(diào)用要把
104、s設成NULL。strtok在s中查找包含在逗號中的字符并用NULL('')來替換,直到找遍整個字符串。返回值:從s開頭開始的一個個被分割的串。當沒有被分割的串時則返回NULL。所有逗號中包含的字符都會被濾掉,并將被濾掉的地方設為一處分割的節(jié)點。</p><p> 分解完字符串之后中心波長LMCN+1.551535E-06的值賦給變量r,帶寬的值LMHW+24.01663E-09賦給變量dr,峰
105、值個數(shù)NOSP0002賦給變量pk,然后在進一步處理用cut(char *s, char *r)函數(shù)去掉前面無用的四個字符串。對中心波長和帶寬都要乘1000000000,可以去除指數(shù)。</p><p> (3)中心波長,功率。 “OPK”命令讀出的數(shù)據(jù)形式如下:</p><p> LMPK+1.558200E-06,LVPK-7.4867E+00</p><p>
106、; 因為字符串比較短,只有11個值,所以處理數(shù)據(jù)也可以簡單的進行。直接將第六個值賦給變量lmpk,再乘以1000000000。將第十個值賦給變量lvpk。所以這個數(shù)據(jù)是比較容易處理的。</p><p><b> (4)數(shù)據(jù)的保存 </b></p><p> 保存數(shù)據(jù)要有文件名,在主面板上設置一個控件,用來輸入要保存的文件名。然后用GetCtrlVal函數(shù)獲取這個
107、文件名。文件名不能為空,所以我們要判斷文件名是否為空,如果為空,則用MessagePopup ("提示?。。?quot;,"文件名不能為空!")來提示文件名不能為空。因為保存的數(shù)據(jù)有X軸,Y軸等的數(shù)據(jù),為了區(qū)分這兩組數(shù)據(jù),可以用strcat函數(shù),函數(shù)原型為:char*strcat(char*str1, char*str2);功能是把字符串str2接到str1后面,str1后面的‘\0’被取消。我們可以通過
108、添加不同的str2來區(qū)分X軸,Y軸等數(shù)據(jù)。在這里我們還將用到打開文件和將向緩沖區(qū)中的字符串寫入文件中。文件的保存為TXT格式。</p><p><b> 打開文件函數(shù):</b></p><p> int OpenFile (char *fileName, int read/writeMode, int action, int fileType);</p>
109、;<p> 用seperate函數(shù)分解之后的有效數(shù)字比較多,為了方便實驗員分析數(shù)據(jù),我們可以將其的有效數(shù)字減少,這里可以用sprintf(y,"%.3f",data_y[i]); data_y[i]是將要被化簡的數(shù)據(jù),"%.3f"是要被化簡的格式,y是用來保存化簡之后的數(shù)據(jù)。</p><p> 為了便于保存之后能更好的再次分析這些數(shù)據(jù),我們在保存的時候?qū)Σ?/p>
110、同的數(shù)據(jù)也采取了不同的方式。對X,Y軸的數(shù)據(jù),保存到TXT文檔中時是每行的行開頭保存一個數(shù)據(jù),即在每個數(shù)據(jù)后面加一個換行符“\n”。然后用WriteFile函數(shù)將這些數(shù)據(jù)存之相應的文檔。</p><p> OSW?和OPK命令讀出的數(shù)據(jù)包括峰值波長,帶寬,功率等,為了便于便于對比分析,我們將這些放到同一個TXT文檔中,這樣便于觀察和分析數(shù)據(jù)。具體方法是將每次采集到的波長,帶寬,峰值功率等放同一行。 在一行輸入第
111、一個數(shù)據(jù)之后在其后面加字符“/t”,之后接著以同樣的方式輸入第二個數(shù)據(jù),第五個數(shù)據(jù)輸完了之后在后面加換行符“\n”,在下一行輸入下一組數(shù)據(jù)。</p><p> ③ 數(shù)據(jù)顯示部分 數(shù)據(jù)顯示包括圖表的繪制和單獨數(shù)據(jù)的顯示</p><p> 繪圖函數(shù)有好幾種,如PlotXY繪制x,y軸數(shù)組的曲線圖,PlotX沿Y軸坐標繪制X軸數(shù)組的曲線圖,PlotY沿X軸坐標繪制Y軸數(shù)組的曲線圖。在這里我們
112、要用PlotXY和PlotY兩個函數(shù)。</p><p> PlotXY函數(shù)的原型如下:</p><p> int PlotXY (int panelHandle, int controlID, void *xArray, void *yArray, int numberOfPoints, int xDataType, int yDataType, int plotStyle, int
113、pointStyle, int lineStyle, int pointFrequency, int color);</p><p> 我在程序中使用的函數(shù)設置入下:</p><p> PlotXY(mainpnl,MAINPNL_GRAPH,data_x,data_y,read_len_y,VAL_DOUBLE,VAL_DOUBLE,VAL_THIN_LINE,VAL_DOTTED_
114、SOLID_SQUARE,VAL_SOLID,VAL_CONNECTED_POINTS ,VAL_RED);</p><p> PlotY函數(shù)的原型如下:</p><p> int PlotY (int panelHandle, int controlID, void *yArray, int numberOfPoints, int yDataType, int plotStyle,
115、int pointStyle, int lineStyle, int pointFrequency, int color);</p><p> 函數(shù)中的參數(shù)和PlotXY中的是一樣的。程序中的函數(shù)設置如下:</p><p> PlotY(mainpnl,MAINPNL_R_GRAPH,cmp_r,r_num,VAL_DOUBLE,VAL_THIN_LINE,VAL_SOLID_SQUA
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于CPLD的線陣CCD光譜信息采集系統(tǒng)研究.pdf
- 基于FPGA的線陣CCD瞬態(tài)光譜信息采集系統(tǒng)研究.pdf
- 基于光譜信息的模型辨識方法研究.pdf
- 作物光譜信息管理系統(tǒng)的設計與實現(xiàn).pdf
- 溫室環(huán)境信息自動采集與智能控制系統(tǒng)的研究.pdf
- 基于PLC的試卷信息采集設備控制系統(tǒng)設計及研究.pdf
- 基于PCI協(xié)議的GPIB控制卡的設計.pdf
- 基于光譜信息的高光譜圖像目標識別方法的研究.pdf
- 35971.基于決策樹模型的喀斯特石漠化光譜信息自動提取研究
- 結合空間信息與光譜信息的高光譜圖像分類研究.pdf
- 基于光譜信息的激光—MAG復合電弧特性研究.pdf
- 基于FPGA的數(shù)據(jù)采集控制系統(tǒng)設計.pdf
- 交流異步電機試驗自動采集與控制系統(tǒng)的設計
- 基于XML元數(shù)據(jù)的農(nóng)作物光譜信息管理系統(tǒng)的研究與設計.pdf
- 基于紋理與光譜信息巖性分類的研究.pdf
- 基于mesh網(wǎng)絡智能電能信息采集與控制系統(tǒng)的設計與實現(xiàn).pdf
- 基于高光譜遙感不同發(fā)生層土壤的光譜信息的提取研究.pdf
- 基于GPIB總線規(guī)范的數(shù)據(jù)采集系統(tǒng)的設計及應用.pdf
- 基于FPGA的水樣在線采集控制系統(tǒng)的設計.pdf
- 基于紋理及光譜信息融合的遙感圖像分類方法研究(1)
評論
0/150
提交評論