版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
本文格式為Word版,下載可任意編輯——LabWindowsCVI入門之第三章計算機外設開發(fā)LabWindows/CVI入門之第三章:計算機外設開發(fā)
通過上一章節(jié)的學習,大家已經(jīng)把握了在CVI下開發(fā)GUI應用程序的基本步驟和基本方法。CVI的重要應用是工業(yè)接口通信、繁雜的數(shù)據(jù)采集和儀器控制系統(tǒng)的開發(fā),所以對于學習CVI來說僅僅把握GUI程序的開發(fā)還遠遠不夠。實際生產(chǎn)生活中,有些設備要求能夠滿足軍用或工業(yè)領域惡劣環(huán)境或極端天氣下對于可靠性的要求,有些設備要求能夠滿足快速大容量數(shù)據(jù)的持續(xù)傳輸?shù)囊?,有些設備要求能夠滿足防塵防水防暴防震防撬的要求,有些設備要求滿足低成本的要求,紛繁的要求導致了不同的接口標準以及接口協(xié)議的誕生。僅僅把握了CVI下GUI的編程只能說是對CVI入門,卻沒有充分的體會到CVI的精華。在紛繁的接口與特性化的需求下,開發(fā)簡捷高效、穩(wěn)定易用、用戶體驗良好的程序才是我們學習CVI的終極目標。
3.1計算機組件編程
在本節(jié)中,我們將會接觸到在CVI下進行文件操作、音頻播放、OpenGL操作、SQL數(shù)據(jù)庫查詢、剪貼板操作、動態(tài)數(shù)據(jù)交換、ActiveX控件操作、調(diào)用.Net操作等相關內(nèi)容。在介紹相關內(nèi)容時,我們只介紹原理與CVI對應的函數(shù)功能,具體使用方法需要大家查詢CVI的幫助文檔。
3.1.1在CVI中進行文件操作
在程序運行時,往往需要將一些數(shù)據(jù)(運行的最終結果或中間數(shù)據(jù))輸出到磁盤上存放起來,以后需要時再從磁盤中輸入到計算機內(nèi)存。這樣就需要對文件進行讀寫操作,LabWindows/CVI中對文件讀寫操作的常用函數(shù)如下:
(1)OpenFile開啟一個文件用以讀或者寫,函數(shù)返回文件句柄;(2)CloseFile關閉指定的文件;
(3)ReadFile從文件中讀取指定字節(jié)數(shù)的內(nèi)容到字符串緩沖區(qū);(4)WriteFile將字符串緩沖區(qū)中指定字節(jié)數(shù)的內(nèi)容寫到文件中;(5)ArrayToFile將數(shù)組內(nèi)容保存到文件中;(6)FileToArray從文件中讀取數(shù)據(jù)存儲到數(shù)組中。(7)ReadLine從文件讀取字節(jié)直到換行。
(8)WriteLine將緩沖區(qū)中指定的字節(jié)數(shù)寫入文件中,同時換行。(9)DeleteFile刪除文件(10)RenameFile重命名文件(11)CopyFile復制文件
下面給出了一個簡單的新建test.txt文件,并且向文本文件中寫入字符并讀出來的例子。
該函數(shù)運行之后,將在工程文件夾下新建一test.txt的文本文件,文件內(nèi)容如圖3-1所示。程序運行結果如圖3-2所示。
圖3-1文本文件內(nèi)容
圖3-2程序運行結果
與文件讀寫有關的函數(shù)可以在FormattingandI/OLibrary的FileI/O中找到,與文件操作有關的函數(shù)可以在UtilityLibrary的FileUtilities中找到,與文件夾有關的函數(shù)可以在UtilityLibrary的DirectoryUtilities中找到。另外,ANSIC中對文件的操作的函數(shù)如fopen、fread、fputs等函數(shù)在CVI中依舊可以使用。
3.1.2網(wǎng)絡通信:在CVI中調(diào)用TCP庫
在測控領域,隨著網(wǎng)絡計算、遠程監(jiān)控與遠程診斷等在儀器儀表領域的應用與發(fā)展,網(wǎng)絡通信已經(jīng)成為儀器的基本功能。CVI也提供了Internet庫、TCP庫、DataSocket庫以供用戶使用。
Internet庫主要提供了FTP協(xié)議、Telnet協(xié)議以及POP3協(xié)議的客戶端的函數(shù)支持。TCP庫主要提供了基于TCP協(xié)議的網(wǎng)絡數(shù)據(jù)收發(fā)函數(shù)。
DataSocket庫提供了比TCP更加便利有效的NI推出的DataSocket的操作函數(shù)。在本小節(jié)的介紹之前,我們假設大家已經(jīng)知道了TCP/IP協(xié)議、FTP協(xié)議、POP3協(xié)議、HTTP協(xié)議、Telnet協(xié)議以及他們之間的相互關系,知道了IP地址、子網(wǎng)掩碼、DNS、網(wǎng)關是什么。若對以上問題有含混之處,建議馬上通過Google等手段理解這些概念。本節(jié)主要介紹TCP通信的相關內(nèi)容。
利用TCP函數(shù)庫進行網(wǎng)絡傳輸都要涉及服務器端和客戶端。TCP服務器可以通過網(wǎng)絡向用戶應用程序發(fā)送數(shù)據(jù)和從客戶應用程序接收數(shù)據(jù)。TCP客戶可以向TCP服務應用程序發(fā)送連接請求,并從服務器接收數(shù)據(jù)和向服務器發(fā)送數(shù)據(jù)。服務器需要注冊,注冊以后等待客戶向它發(fā)送連接請求,而客戶只能向已經(jīng)存在的服務器發(fā)送連接請求。運行TCP服務器應用程序的計算機一般叫做主機。服務器端的傳輸控制函數(shù)如下:(1)RegisterTCPServer注冊TCP服務器(2)ServerTCPRead從客戶端讀取數(shù)據(jù)(3)ServerTCPWrite向客戶端發(fā)送數(shù)據(jù)(4)UnregisterTCPServer注銷TCP服務器(5)DisconnectTCPClient斷開與客戶端的連接
要是程序成為TCP服務器,必需要運行RegisterTCPServer函數(shù)??蛻舳说膫鬏斂刂坪瘮?shù)如下:
(1)ConnectToTCPServer連接到TCP服務器(2)ClientTCPServer從服務器讀取數(shù)據(jù)(3)ClientTCPWrite向服務器寫數(shù)據(jù)
(4)DisconnectFromTCPServer斷開與TCP服務器的連接
另外CVI的TCP庫還提供了TCP的回調(diào)函數(shù),并提供了連接開始(TCO_CONNECT)、斷開連接(TCP_DISCONNECT)以及數(shù)據(jù)有效(TCP_DATAREADY)3種消息。下面給出了一個簡單的建立TCP服務器,并通過客戶端連接TCP服務器的例子。在該例如程序中,TCP服務器運行后客戶端向服務器發(fā)送“Hello,I'mclient.〞的文本信息,服務器向客戶端返回“OK〞信息。TCP服務器代碼如下:
TCP客戶端的代碼如下:
TCP服務器與TCP客戶端的程序分別保存在兩個不同的工程中。運行時,先運行TCP服務器程序,再運行TCP客戶端程序,運行效果如所示。
圖3-3TCP例如程序運行結果
3.1.3網(wǎng)絡通信:在CVI中調(diào)用Internet庫
Internet庫主要提供了FTP協(xié)議、Telnet協(xié)議以及POP3協(xié)議的客戶端的函數(shù)支持。FTP是應用層的協(xié)議,它基于TCP協(xié)議,負責進行文件的傳輸。CVI通過封裝隱蔽了一些底層的FTP操作,提供了兩個便利的FTP操作函數(shù):
(1)InetFTPAutoSend將本地的文件傳輸?shù)街付ǖ倪h程服務器主機上(2)InetFTPAutoRetrieve將指定遠程服務器上的文件傳輸?shù)奖緳C上。
Telnet協(xié)議也是應用層的協(xié)議,同樣基于TCP協(xié)議,是Internet遠程登陸服務的標準協(xié)議和主要方式。CVI提供了對Telnet操作的以下函數(shù):(1)InetTelnetOpen建立Telnet連接
(2)InetTelnetRead從Telnet服務器中讀取數(shù)據(jù)(3)InetTelnetWrite向Telnet服務器寫數(shù)據(jù)(4)InetTelnetClose關閉Telnet連接
(5)InetTelnetReadUntil從Telnet服務器中讀取數(shù)據(jù),直到遇到指定字符或達到指定字節(jié)數(shù)或者超時
(6)InetTelnetRunScript在Telnet服務器上執(zhí)行指定的腳本
POP3也是應用層的協(xié)議,基于TCP協(xié)議,規(guī)定個人計算機如何連接到互聯(lián)網(wǎng)上的郵件服務器進行收發(fā)郵件。POP3協(xié)議允許用戶從服務器上把郵件存儲到本地主機(即自己的計算機)上,同時根據(jù)客戶端的操作刪除或保存在郵件服務器上的郵件。CVI提供了對POP3操作的以下函數(shù):
(1)InetPop3Open連接POP3服務器
(2)InetPop3Close關閉與POP3服務器的連接
(3)InetPop3GetNumMessages獲取POP3服務器上的消息數(shù)量(4)InetPop3GetMessageSize獲取POP3服務器上消息的大?。?)InetPop3GetMessageInfo獲取POP3服務器上郵件的具體信息(6)InetPop3DeleteMessage刪除POP3服務器上的消息(7)InetPop3GetMessage獲取POP3電子郵件消息頭與內(nèi)容
(8)InetPop3ParseMessageHeader解析POP3郵件的消息頭
3.1.4網(wǎng)絡通信:在CVI中調(diào)用DataSocket庫
DataSocket技術是NI公司推出的面向測控領域的網(wǎng)絡通信技術。DataSocket技術基于Microsoft的COM和ActiveX技術,對TCP/IP協(xié)議進行高度封裝,面向測量和自動化應用,用于共享和發(fā)布實時數(shù)據(jù)DamSockd能有效地支持本地計算機上不同應用程序?qū)μ囟〝?shù)據(jù)的同時應用,以及網(wǎng)絡和不同計算機的多個應用程序之間的數(shù)據(jù)交互,實現(xiàn)跨機器、跨語言、跨進程實時數(shù)據(jù)共享。
在測試測量過程中,用戶只需要知道數(shù)據(jù)源和數(shù)據(jù)庫及需要交換的數(shù)據(jù)就可以直接進行高層應用程序的開發(fā),實現(xiàn)高速數(shù)據(jù)傳輸,而不必關心底層的實現(xiàn)細節(jié),從而簡化通信程序的編寫過程、提高編程效率。
DataSocket包括DataSocketServerManager(以下簡稱Manager),DataSocketServer和DataSocketAPI一部分。
Manager是一個獨立運行的程序,主要功能有:設置DataSocketServer連接的客戶端程序的最大數(shù)目和創(chuàng)立數(shù)據(jù)項的最大數(shù)目:創(chuàng)立用戶組和用戶;設置用戶創(chuàng)立和讀寫數(shù)據(jù)項的權限;限制身份不明的客戶對服務器進行訪問和攻擊。例如,將Manager中的DefaultReader設置為everyhost,則網(wǎng)中的每臺客戶計算機都可以讀取服務器上的數(shù)據(jù)。Manager對
DataSocketServer的配置必需在本地計算機上進行,而不能遠程配置或通過運行程序來配置。
DataSocketServer是一個必需運行在服務器端的程序,負責監(jiān)管Manager中所設定的具有各種權限的用戶組和客戶端程序之間的數(shù)據(jù)交換。DataSocketServer通過內(nèi)部數(shù)據(jù)自描述格式對TCP/IP進行優(yōu)化和管理,簡化Internet通信方式,提供自由的數(shù)據(jù)傳輸,可以直接傳送虛擬儀器程序所采集到的布爾型、數(shù)字型、字符串型、數(shù)組型和波形等常用類型的數(shù)據(jù)。它可以和測控應用程序安裝在同一臺計算機上,也可以分裝在不同的計算機上,以便用防火墻進行隔離來增加整個系統(tǒng)的安全性。DataSocketServer不會占用測控計算機CPU的工作時間,測控應用程序可以運行得更快。使用DataSocket技術進行通信時服務器和客戶端得計算機上筆形都進行DataSocketServer。
DataSocketAPI提供獨立的接口,用于不同的語言平臺內(nèi)部多種數(shù)據(jù)類型的通讀。在LabVIEW中,DataSocketAPI被制作成ActiveX控件和一系列功能VI(VirtualInstrument),用戶可以便利地使用。一般由服務器進行數(shù)據(jù)采集,根據(jù)需要將測量地數(shù)據(jù)寫入DataSocket數(shù)據(jù)公共區(qū),然后客戶端通過網(wǎng)絡從數(shù)據(jù)公共區(qū)讀取所需地測量數(shù)據(jù)。DataSocket庫函數(shù)介紹如下。
(1)DS_Open創(chuàng)立DataSocket對象并連接到數(shù)據(jù)源
(2)DS_DiscardObjHandle釋放DataSocket句柄和它占用的相關資源(3)DS_GetDataType獲取DataSocket對象的數(shù)據(jù)類型(4)DS_GetDataValue獲取DataSocket對象相關的數(shù)據(jù)值(5)DS_SetDataValue設置DataSocket對象相關的數(shù)據(jù)值
(6)DS_Update在寫連接,把DataSocket對象的屬性和數(shù)據(jù)寫到DataSocket服務器;在讀連接,從DataSocket服務器讀取DataSocket對象的屬性和數(shù)據(jù)(7)DS_SelectURL允許終端用戶選擇連接的DataSocketURL(8)DS_FreeMemory釋放DataSocket庫函數(shù)占用的內(nèi)存
(9)DS_GetLibraryErrorString返回描述庫錯誤的字符串
DataSocket是一個獨立于平臺的解決方案,限于篇幅,此處不再給出DataSocket的例如程序,感興趣的同學可以通過CVI安裝目錄下的samples中datasocket相關部分自行學習。
3.1.5在CVI中使用音頻動畫
在大量測控系統(tǒng)中,往往需要參與音頻、圖像、動畫或具有互動功能的3D模型。在本節(jié)中,我們將會詳細介紹如何向應用程序中添加這些控件。圖像
在程序中添加圖像相對比較簡單,CVI中直接提供了圖像控件,通過控件的幫助文檔很簡單把握在GUI中添加圖像以及通過程序更改圖像的方法。動畫
動畫控件是由PictureRing(圖像列表)控件轉(zhuǎn)化而來,在編輯界面添加PictureRing之后,通過菜單-File-Open-FunctionTree(*.fp),開啟CVI安裝目錄下toolslib\\custctrl\\animate.fp文件,在CVI窗口的左下角即出現(xiàn)AnimationControl的庫。庫中提供了如下四個函數(shù):(1)AnimateCtrl_Create直接創(chuàng)立動畫控件(此函數(shù)會自動在編輯界面添加PictureRing控件,但不會自動給PictureRing添加圖片)
(2)AnimateCtrl_ConvertFromPictRing將PictureRing控件轉(zhuǎn)換為動畫控件(3)AnimateCtrl_SetAttribute設置動畫控件的屬性(4)AnimateCtrl_GetAttribute獲取動畫控件的屬性
另外在最新版的CVI中,Picture控件提供了gif的支持,用戶可以直接添加gif動畫。音頻
同樣CVI也提供了對音頻播放功能的支持。CVI只提供了對wav文件播放的支持,若需要支持其他格式的文件需要調(diào)用其他的dll文件完成。函數(shù)為:sndPlaySound播放指定文件路徑的wav文件OpenGL
CVI默認提供對OpenGL的支持,函數(shù)庫文件為cviogl.fp,位于CVI安裝目錄的
toolslib\\custctrl\\cviogl.fp。該函數(shù)庫文件包含了控件與作圖兩個子類的函數(shù),可以完成創(chuàng)立、更新、刪除OpenGL控件以及獲取OpenGL控件屬性等功能。
特別需要注意的是,我們不僅可以使用cviogl.fp中提供的函數(shù),OpenGL中通用的glau.lib、glu32.lib、opengl32.lib庫中的所有函數(shù)都可以使用。也就是說,OpenGL強大的功能也可以在CVI環(huán)境下發(fā)揮的淋漓盡致。
OpenGL本身就是一個功能強大的庫,目前好多3D游戲都是基于OpenGL設計,此處篇幅所限不再展開,感興趣的讀者可以將以前寫的OpenGL代碼移植到CVI環(huán)境下。
3.1.6在CVI中使用SQLToolKit
LabWindows/CVISQLToolkit是一個用來訪問數(shù)據(jù)庫的軟件工具包。工具包里包含了一個用來完成一般數(shù)據(jù)庫任務的高級函數(shù)集。在其基礎上,可實現(xiàn)定制任務等高級功能的開發(fā)。LabWindows/CVISQL工具包提供若干ODBC數(shù)據(jù)庫驅(qū)動器,工具包符合ODBC標準,因此對任何符合ODBC數(shù)據(jù)庫驅(qū)動器均可使用。常見的MicrosoftOfficeAccess支持的.accdb、.mdb文件都可以通過ODBC數(shù)據(jù)庫驅(qū)動器使用。
SQLToolkit并不隨CVI的安裝發(fā)行包一起安裝,用戶若想使用CVI開發(fā)數(shù)據(jù)庫需要額外從NI的官方網(wǎng)站下載:
/evaluation/cvi/pc/toolkits/NILWCVISQL220.exe利用CVISQLToolkit進行數(shù)據(jù)庫操作尋常由以下五步完成:
連接數(shù)據(jù)庫-激活SQL連接-處理SQL語句-斷開SQL連接-斷開數(shù)據(jù)庫。
圖3-5提供了使用SQLToolkit實現(xiàn)數(shù)據(jù)庫操作的流程圖,一般對ODBC數(shù)據(jù)庫進行操作都是根據(jù)圖3-5的說明依次調(diào)用內(nèi)部的函數(shù)實現(xiàn)的。連接
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《延安大學研究生》課件
- 幼兒園周四營養(yǎng)食譜
- 《爆管應急處理預案》課件
- 《汽車回收再生服務》課件
- 教育行業(yè)前臺服務總結
- 醫(yī)療行業(yè)前臺工作體會
- 財務工作成長心得
- 康復閱讀護士的工作總結
- 客戶信用評估總結
- 《淺談酒店市場營銷》課件
- 人力資源管理概論全套課件
- 伊索寓言-狗和影子課件
- 卸船機用行星減速機的設計-畢業(yè)設計
- 中班美術活動美麗的蝴蝶教案【含教學反思】
- 北師大版九年級數(shù)學上冊教學教學工作總結
- 光儲電站儲能系統(tǒng)調(diào)試方案
- (完整)小學語文考試專用作文方格紙
- 管理供應商 供應商績效評估
- 煙花爆竹工程設計安全規(guī)范
- 1000MW機組鍋爐過渡段T23水冷壁管檢修導則(征求意見稿)
- 夾層鋼結構施工方案鋼結構夾層施工方案
評論
0/150
提交評論