LabWindowsCVI入門之第三章計(jì)算機(jī)外設(shè)開發(fā)_第1頁
LabWindowsCVI入門之第三章計(jì)算機(jī)外設(shè)開發(fā)_第2頁
LabWindowsCVI入門之第三章計(jì)算機(jī)外設(shè)開發(fā)_第3頁
LabWindowsCVI入門之第三章計(jì)算機(jī)外設(shè)開發(fā)_第4頁
LabWindowsCVI入門之第三章計(jì)算機(jī)外設(shè)開發(fā)_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——LabWindowsCVI入門之第三章計(jì)算機(jī)外設(shè)開發(fā)LabWindows/CVI入門之第三章:計(jì)算機(jī)外設(shè)開發(fā)

通過上一章節(jié)的學(xué)習(xí),大家已經(jīng)把握了在CVI下開發(fā)GUI應(yīng)用程序的基本步驟和基本方法。CVI的重要應(yīng)用是工業(yè)接口通信、繁雜的數(shù)據(jù)采集和儀器控制系統(tǒng)的開發(fā),所以對(duì)于學(xué)習(xí)CVI來說僅僅把握GUI程序的開發(fā)還遠(yuǎn)遠(yuǎn)不夠。實(shí)際生產(chǎn)生活中,有些設(shè)備要求能夠滿足軍用或工業(yè)領(lǐng)域惡劣環(huán)境或極端天氣下對(duì)于可靠性的要求,有些設(shè)備要求能夠滿足快速大容量數(shù)據(jù)的持續(xù)傳輸?shù)囊?,有些設(shè)備要求能夠滿足防塵防水防暴防震防撬的要求,有些設(shè)備要求滿足低成本的要求,紛繁的要求導(dǎo)致了不同的接口標(biāo)準(zhǔn)以及接口協(xié)議的誕生。僅僅把握了CVI下GUI的編程只能說是對(duì)CVI入門,卻沒有充分的體會(huì)到CVI的精華。在紛繁的接口與特性化的需求下,開發(fā)簡(jiǎn)捷高效、穩(wěn)定易用、用戶體驗(yàn)良好的程序才是我們學(xué)習(xí)CVI的終極目標(biāo)。

3.1計(jì)算機(jī)組件編程

在本節(jié)中,我們將會(huì)接觸到在CVI下進(jìn)行文件操作、音頻播放、OpenGL操作、SQL數(shù)據(jù)庫查詢、剪貼板操作、動(dòng)態(tài)數(shù)據(jù)交換、ActiveX控件操作、調(diào)用.Net操作等相關(guān)內(nèi)容。在介紹相關(guān)內(nèi)容時(shí),我們只介紹原理與CVI對(duì)應(yīng)的函數(shù)功能,具體使用方法需要大家查詢CVI的幫助文檔。

3.1.1在CVI中進(jìn)行文件操作

在程序運(yùn)行時(shí),往往需要將一些數(shù)據(jù)(運(yùn)行的最終結(jié)果或中間數(shù)據(jù))輸出到磁盤上存放起來,以后需要時(shí)再從磁盤中輸入到計(jì)算機(jī)內(nèi)存。這樣就需要對(duì)文件進(jìn)行讀寫操作,LabWindows/CVI中對(duì)文件讀寫操作的常用函數(shù)如下:

(1)OpenFile開啟一個(gè)文件用以讀或者寫,函數(shù)返回文件句柄;(2)CloseFile關(guān)閉指定的文件;

(3)ReadFile從文件中讀取指定字節(jié)數(shù)的內(nèi)容到字符串緩沖區(qū);(4)WriteFile將字符串緩沖區(qū)中指定字節(jié)數(shù)的內(nèi)容寫到文件中;(5)ArrayToFile將數(shù)組內(nèi)容保存到文件中;(6)FileToArray從文件中讀取數(shù)據(jù)存儲(chǔ)到數(shù)組中。(7)ReadLine從文件讀取字節(jié)直到換行。

(8)WriteLine將緩沖區(qū)中指定的字節(jié)數(shù)寫入文件中,同時(shí)換行。(9)DeleteFile刪除文件(10)RenameFile重命名文件(11)CopyFile復(fù)制文件

下面給出了一個(gè)簡(jiǎn)單的新建test.txt文件,并且向文本文件中寫入字符并讀出來的例子。

該函數(shù)運(yùn)行之后,將在工程文件夾下新建一test.txt的文本文件,文件內(nèi)容如圖3-1所示。程序運(yùn)行結(jié)果如圖3-2所示。

圖3-1文本文件內(nèi)容

圖3-2程序運(yùn)行結(jié)果

與文件讀寫有關(guān)的函數(shù)可以在FormattingandI/OLibrary的FileI/O中找到,與文件操作有關(guān)的函數(shù)可以在UtilityLibrary的FileUtilities中找到,與文件夾有關(guān)的函數(shù)可以在UtilityLibrary的DirectoryUtilities中找到。另外,ANSIC中對(duì)文件的操作的函數(shù)如fopen、fread、fputs等函數(shù)在CVI中依舊可以使用。

3.1.2網(wǎng)絡(luò)通信:在CVI中調(diào)用TCP庫

在測(cè)控領(lǐng)域,隨著網(wǎng)絡(luò)計(jì)算、遠(yuǎn)程監(jiān)控與遠(yuǎn)程診斷等在儀器儀表領(lǐng)域的應(yīng)用與發(fā)展,網(wǎng)絡(luò)通信已經(jīng)成為儀器的基本功能。CVI也提供了Internet庫、TCP庫、DataSocket庫以供用戶使用。

Internet庫主要提供了FTP協(xié)議、Telnet協(xié)議以及POP3協(xié)議的客戶端的函數(shù)支持。TCP庫主要提供了基于TCP協(xié)議的網(wǎng)絡(luò)數(shù)據(jù)收發(fā)函數(shù)。

DataSocket庫提供了比TCP更加便利有效的NI推出的DataSocket的操作函數(shù)。在本小節(jié)的介紹之前,我們假設(shè)大家已經(jīng)知道了TCP/IP協(xié)議、FTP協(xié)議、POP3協(xié)議、HTTP協(xié)議、Telnet協(xié)議以及他們之間的相互關(guān)系,知道了IP地址、子網(wǎng)掩碼、DNS、網(wǎng)關(guān)是什么。若對(duì)以上問題有含混之處,建議馬上通過Google等手段理解這些概念。本節(jié)主要介紹TCP通信的相關(guān)內(nèi)容。

利用TCP函數(shù)庫進(jìn)行網(wǎng)絡(luò)傳輸都要涉及服務(wù)器端和客戶端。TCP服務(wù)器可以通過網(wǎng)絡(luò)向用戶應(yīng)用程序發(fā)送數(shù)據(jù)和從客戶應(yīng)用程序接收數(shù)據(jù)。TCP客戶可以向TCP服務(wù)應(yīng)用程序發(fā)送連接請(qǐng)求,并從服務(wù)器接收數(shù)據(jù)和向服務(wù)器發(fā)送數(shù)據(jù)。服務(wù)器需要注冊(cè),注冊(cè)以后等待客戶向它發(fā)送連接請(qǐng)求,而客戶只能向已經(jīng)存在的服務(wù)器發(fā)送連接請(qǐng)求。運(yùn)行TCP服務(wù)器應(yīng)用程序的計(jì)算機(jī)一般叫做主機(jī)。服務(wù)器端的傳輸控制函數(shù)如下:(1)RegisterTCPServer注冊(cè)TCP服務(wù)器(2)ServerTCPRead從客戶端讀取數(shù)據(jù)(3)ServerTCPWrite向客戶端發(fā)送數(shù)據(jù)(4)UnregisterTCPServer注銷TCP服務(wù)器(5)DisconnectTCPClient斷開與客戶端的連接

要是程序成為TCP服務(wù)器,必需要運(yùn)行RegisterTCPServer函數(shù)??蛻舳说膫鬏斂刂坪瘮?shù)如下:

(1)ConnectToTCPServer連接到TCP服務(wù)器(2)ClientTCPServer從服務(wù)器讀取數(shù)據(jù)(3)ClientTCPWrite向服務(wù)器寫數(shù)據(jù)

(4)DisconnectFromTCPServer斷開與TCP服務(wù)器的連接

另外CVI的TCP庫還提供了TCP的回調(diào)函數(shù),并提供了連接開始(TCO_CONNECT)、斷開連接(TCP_DISCONNECT)以及數(shù)據(jù)有效(TCP_DATAREADY)3種消息。下面給出了一個(gè)簡(jiǎn)單的建立TCP服務(wù)器,并通過客戶端連接TCP服務(wù)器的例子。在該例如程序中,TCP服務(wù)器運(yùn)行后客戶端向服務(wù)器發(fā)送“Hello,I'mclient.〞的文本信息,服務(wù)器向客戶端返回“OK〞信息。TCP服務(wù)器代碼如下:

TCP客戶端的代碼如下:

TCP服務(wù)器與TCP客戶端的程序分別保存在兩個(gè)不同的工程中。運(yùn)行時(shí),先運(yùn)行TCP服務(wù)器程序,再運(yùn)行TCP客戶端程序,運(yùn)行效果如所示。

圖3-3TCP例如程序運(yùn)行結(jié)果

3.1.3網(wǎng)絡(luò)通信:在CVI中調(diào)用Internet庫

Internet庫主要提供了FTP協(xié)議、Telnet協(xié)議以及POP3協(xié)議的客戶端的函數(shù)支持。FTP是應(yīng)用層的協(xié)議,它基于TCP協(xié)議,負(fù)責(zé)進(jìn)行文件的傳輸。CVI通過封裝隱蔽了一些底層的FTP操作,提供了兩個(gè)便利的FTP操作函數(shù):

(1)InetFTPAutoSend將本地的文件傳輸?shù)街付ǖ倪h(yuǎn)程服務(wù)器主機(jī)上(2)InetFTPAutoRetrieve將指定遠(yuǎn)程服務(wù)器上的文件傳輸?shù)奖緳C(jī)上。

Telnet協(xié)議也是應(yīng)用層的協(xié)議,同樣基于TCP協(xié)議,是Internet遠(yuǎn)程登陸服務(wù)的標(biāo)準(zhǔn)協(xié)議和主要方式。CVI提供了對(duì)Telnet操作的以下函數(shù):(1)InetTelnetOpen建立Telnet連接

(2)InetTelnetRead從Telnet服務(wù)器中讀取數(shù)據(jù)(3)InetTelnetWrite向Telnet服務(wù)器寫數(shù)據(jù)(4)InetTelnetClose關(guān)閉Telnet連接

(5)InetTelnetReadUntil從Telnet服務(wù)器中讀取數(shù)據(jù),直到遇到指定字符或達(dá)到指定字節(jié)數(shù)或者超時(shí)

(6)InetTelnetRunScript在Telnet服務(wù)器上執(zhí)行指定的腳本

POP3也是應(yīng)用層的協(xié)議,基于TCP協(xié)議,規(guī)定個(gè)人計(jì)算機(jī)如何連接到互聯(lián)網(wǎng)上的郵件服務(wù)器進(jìn)行收發(fā)郵件。POP3協(xié)議允許用戶從服務(wù)器上把郵件存儲(chǔ)到本地主機(jī)(即自己的計(jì)算機(jī))上,同時(shí)根據(jù)客戶端的操作刪除或保存在郵件服務(wù)器上的郵件。CVI提供了對(duì)POP3操作的以下函數(shù):

(1)InetPop3Open連接POP3服務(wù)器

(2)InetPop3Close關(guān)閉與POP3服務(wù)器的連接

(3)InetPop3GetNumMessages獲取POP3服務(wù)器上的消息數(shù)量(4)InetPop3GetMessageSize獲取POP3服務(wù)器上消息的大?。?)InetPop3GetMessageInfo獲取POP3服務(wù)器上郵件的具體信息(6)InetPop3DeleteMessage刪除POP3服務(wù)器上的消息(7)InetPop3GetMessage獲取POP3電子郵件消息頭與內(nèi)容

(8)InetPop3ParseMessageHeader解析POP3郵件的消息頭

3.1.4網(wǎng)絡(luò)通信:在CVI中調(diào)用DataSocket庫

DataSocket技術(shù)是NI公司推出的面向測(cè)控領(lǐng)域的網(wǎng)絡(luò)通信技術(shù)。DataSocket技術(shù)基于Microsoft的COM和ActiveX技術(shù),對(duì)TCP/IP協(xié)議進(jìn)行高度封裝,面向測(cè)量和自動(dòng)化應(yīng)用,用于共享和發(fā)布實(shí)時(shí)數(shù)據(jù)DamSockd能有效地支持本地計(jì)算機(jī)上不同應(yīng)用程序?qū)μ囟〝?shù)據(jù)的同時(shí)應(yīng)用,以及網(wǎng)絡(luò)和不同計(jì)算機(jī)的多個(gè)應(yīng)用程序之間的數(shù)據(jù)交互,實(shí)現(xiàn)跨機(jī)器、跨語言、跨進(jìn)程實(shí)時(shí)數(shù)據(jù)共享。

在測(cè)試測(cè)量過程中,用戶只需要知道數(shù)據(jù)源和數(shù)據(jù)庫及需要交換的數(shù)據(jù)就可以直接進(jìn)行高層應(yīng)用程序的開發(fā),實(shí)現(xiàn)高速數(shù)據(jù)傳輸,而不必關(guān)心底層的實(shí)現(xiàn)細(xì)節(jié),從而簡(jiǎn)化通信程序的編寫過程、提高編程效率。

DataSocket包括DataSocketServerManager(以下簡(jiǎn)稱Manager),DataSocketServer和DataSocketAPI一部分。

Manager是一個(gè)獨(dú)立運(yùn)行的程序,主要功能有:設(shè)置DataSocketServer連接的客戶端程序的最大數(shù)目和創(chuàng)立數(shù)據(jù)項(xiàng)的最大數(shù)目:創(chuàng)立用戶組和用戶;設(shè)置用戶創(chuàng)立和讀寫數(shù)據(jù)項(xiàng)的權(quán)限;限制身份不明的客戶對(duì)服務(wù)器進(jìn)行訪問和攻擊。例如,將Manager中的DefaultReader設(shè)置為everyhost,則網(wǎng)中的每臺(tái)客戶計(jì)算機(jī)都可以讀取服務(wù)器上的數(shù)據(jù)。Manager對(duì)

DataSocketServer的配置必需在本地計(jì)算機(jī)上進(jìn)行,而不能遠(yuǎn)程配置或通過運(yùn)行程序來配置。

DataSocketServer是一個(gè)必需運(yùn)行在服務(wù)器端的程序,負(fù)責(zé)監(jiān)管Manager中所設(shè)定的具有各種權(quán)限的用戶組和客戶端程序之間的數(shù)據(jù)交換。DataSocketServer通過內(nèi)部數(shù)據(jù)自描述格式對(duì)TCP/IP進(jìn)行優(yōu)化和管理,簡(jiǎn)化Internet通信方式,提供自由的數(shù)據(jù)傳輸,可以直接傳送虛擬儀器程序所采集到的布爾型、數(shù)字型、字符串型、數(shù)組型和波形等常用類型的數(shù)據(jù)。它可以和測(cè)控應(yīng)用程序安裝在同一臺(tái)計(jì)算機(jī)上,也可以分裝在不同的計(jì)算機(jī)上,以便用防火墻進(jìn)行隔離來增加整個(gè)系統(tǒng)的安全性。DataSocketServer不會(huì)占用測(cè)控計(jì)算機(jī)CPU的工作時(shí)間,測(cè)控應(yīng)用程序可以運(yùn)行得更快。使用DataSocket技術(shù)進(jìn)行通信時(shí)服務(wù)器和客戶端得計(jì)算機(jī)上筆形都進(jìn)行DataSocketServer。

DataSocketAPI提供獨(dú)立的接口,用于不同的語言平臺(tái)內(nèi)部多種數(shù)據(jù)類型的通讀。在LabVIEW中,DataSocketAPI被制作成ActiveX控件和一系列功能VI(VirtualInstrument),用戶可以便利地使用。一般由服務(wù)器進(jìn)行數(shù)據(jù)采集,根據(jù)需要將測(cè)量地?cái)?shù)據(jù)寫入DataSocket數(shù)據(jù)公共區(qū),然后客戶端通過網(wǎng)絡(luò)從數(shù)據(jù)公共區(qū)讀取所需地測(cè)量數(shù)據(jù)。DataSocket庫函數(shù)介紹如下。

(1)DS_Open創(chuàng)立DataSocket對(duì)象并連接到數(shù)據(jù)源

(2)DS_DiscardObjHandle釋放DataSocket句柄和它占用的相關(guān)資源(3)DS_GetDataType獲取DataSocket對(duì)象的數(shù)據(jù)類型(4)DS_GetDataValue獲取DataSocket對(duì)象相關(guān)的數(shù)據(jù)值(5)DS_SetDataValue設(shè)置DataSocket對(duì)象相關(guān)的數(shù)據(jù)值

(6)DS_Update在寫連接,把DataSocket對(duì)象的屬性和數(shù)據(jù)寫到DataSocket服務(wù)器;在讀連接,從DataSocket服務(wù)器讀取DataSocket對(duì)象的屬性和數(shù)據(jù)(7)DS_SelectURL允許終端用戶選擇連接的DataSocketURL(8)DS_FreeMemory釋放DataSocket庫函數(shù)占用的內(nèi)存

(9)DS_GetLibraryErrorString返回描述庫錯(cuò)誤的字符串

DataSocket是一個(gè)獨(dú)立于平臺(tái)的解決方案,限于篇幅,此處不再給出DataSocket的例如程序,感興趣的同學(xué)可以通過CVI安裝目錄下的samples中datasocket相關(guān)部分自行學(xué)習(xí)。

3.1.5在CVI中使用音頻動(dòng)畫

在大量測(cè)控系統(tǒng)中,往往需要參與音頻、圖像、動(dòng)畫或具有互動(dòng)功能的3D模型。在本節(jié)中,我們將會(huì)詳細(xì)介紹如何向應(yīng)用程序中添加這些控件。圖像

在程序中添加圖像相對(duì)比較簡(jiǎn)單,CVI中直接提供了圖像控件,通過控件的幫助文檔很簡(jiǎn)單把握在GUI中添加圖像以及通過程序更改圖像的方法。動(dòng)畫

動(dòng)畫控件是由PictureRing(圖像列表)控件轉(zhuǎn)化而來,在編輯界面添加PictureRing之后,通過菜單-File-Open-FunctionTree(*.fp),開啟CVI安裝目錄下toolslib\\custctrl\\animate.fp文件,在CVI窗口的左下角即出現(xiàn)AnimationControl的庫。庫中提供了如下四個(gè)函數(shù):(1)AnimateCtrl_Create直接創(chuàng)立動(dòng)畫控件(此函數(shù)會(huì)自動(dòng)在編輯界面添加PictureRing控件,但不會(huì)自動(dòng)給PictureRing添加圖片)

(2)AnimateCtrl_ConvertFromPictRing將PictureRing控件轉(zhuǎn)換為動(dòng)畫控件(3)AnimateCtrl_SetAttribute設(shè)置動(dòng)畫控件的屬性(4)AnimateCtrl_GetAttribute獲取動(dòng)畫控件的屬性

另外在最新版的CVI中,Picture控件提供了gif的支持,用戶可以直接添加gif動(dòng)畫。音頻

同樣CVI也提供了對(duì)音頻播放功能的支持。CVI只提供了對(duì)wav文件播放的支持,若需要支持其他格式的文件需要調(diào)用其他的dll文件完成。函數(shù)為:sndPlaySound播放指定文件路徑的wav文件OpenGL

CVI默認(rèn)提供對(duì)OpenGL的支持,函數(shù)庫文件為cviogl.fp,位于CVI安裝目錄的

toolslib\\custctrl\\cviogl.fp。該函數(shù)庫文件包含了控件與作圖兩個(gè)子類的函數(shù),可以完成創(chuàng)立、更新、刪除OpenGL控件以及獲取OpenGL控件屬性等功能。

特別需要注意的是,我們不僅可以使用cviogl.fp中提供的函數(shù),OpenGL中通用的glau.lib、glu32.lib、opengl32.lib庫中的所有函數(shù)都可以使用。也就是說,OpenGL強(qiáng)大的功能也可以在CVI環(huán)境下發(fā)揮的淋漓盡致。

OpenGL本身就是一個(gè)功能強(qiáng)大的庫,目前好多3D游戲都是基于OpenGL設(shè)計(jì),此處篇幅所限不再展開,感興趣的讀者可以將以前寫的OpenGL代碼移植到CVI環(huán)境下。

3.1.6在CVI中使用SQLToolKit

LabWindows/CVISQLToolkit是一個(gè)用來訪問數(shù)據(jù)庫的軟件工具包。工具包里包含了一個(gè)用來完成一般數(shù)據(jù)庫任務(wù)的高級(jí)函數(shù)集。在其基礎(chǔ)上,可實(shí)現(xiàn)定制任務(wù)等高級(jí)功能的開發(fā)。LabWindows/CVISQL工具包提供若干ODBC數(shù)據(jù)庫驅(qū)動(dòng)器,工具包符合ODBC標(biāo)準(zhǔn),因此對(duì)任何符合ODBC數(shù)據(jù)庫驅(qū)動(dòng)器均可使用。常見的MicrosoftOfficeAccess支持的.accdb、.mdb文件都可以通過ODBC數(shù)據(jù)庫驅(qū)動(dòng)器使用。

SQLToolkit并不隨CVI的安裝發(fā)行包一起安裝,用戶若想使用CVI開發(fā)數(shù)據(jù)庫需要額外從NI的官方網(wǎng)站下載:

/evaluation/cvi/pc/toolkits/NILWCVISQL220.exe利用CVISQLToolkit進(jìn)行數(shù)據(jù)庫操作尋常由以下五步完成:

連接數(shù)據(jù)庫-激活SQL連接-處理SQL語句-斷開SQL連接-斷開數(shù)據(jù)庫。

圖3-5提供了使用SQLToolkit實(shí)現(xiàn)數(shù)據(jù)庫操作的流程圖,一般對(duì)ODBC數(shù)據(jù)庫進(jìn)行操作都是根據(jù)圖3-5的說明依次調(diào)用內(nèi)部的函數(shù)實(shí)現(xiàn)的。連接

溫馨提示

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

評(píng)論

0/150

提交評(píng)論