




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、LabWindows/CVI入門(mén)之第三章:計(jì)算機(jī)外設(shè)開(kāi)發(fā)通過(guò)上一章節(jié)的學(xué)習(xí),大家已經(jīng)掌握了在CVI下開(kāi)發(fā)GUI應(yīng)用程序的根本步驟和根本方法。CVI的重要應(yīng)用是工業(yè)接口通信、復(fù)雜的數(shù)據(jù)采集和儀器控制系統(tǒng)的開(kāi)發(fā),所以對(duì)于學(xué)習(xí)CVI來(lái)說(shuō)僅僅掌握GUI程序的開(kāi)發(fā)還遠(yuǎn)遠(yuǎn)不夠。實(shí)際生產(chǎn)生活中,有些設(shè)備要求能夠滿(mǎn)足軍用或工業(yè)領(lǐng)域惡劣環(huán)境或極端天氣下對(duì)于可靠性的要求,有些設(shè)備要求能夠滿(mǎn)足快速大容量數(shù)據(jù)的持續(xù)傳輸?shù)囊?,有些設(shè)備要求能夠滿(mǎn)足防塵防水防暴防震防撬的要求,有些設(shè)備要求滿(mǎn)足低本錢(qián)的要求,紛繁的要求導(dǎo)致了不同的接口標(biāo)準(zhǔn)以及接口協(xié)議的誕生。 僅僅掌握了CVI下
2、GUI的編程只能說(shuō)是對(duì)CVI入門(mén),卻沒(méi)有充分的體會(huì)到CVI的精華。在紛繁的接口與個(gè)性化的需求下,開(kāi)發(fā)簡(jiǎn)捷高效、穩(wěn)定易用、用戶(hù)體驗(yàn)良好的程序才是我們學(xué)習(xí)CVI的終極目標(biāo)。3.1 計(jì)算機(jī)組件編程 在本節(jié)中,我們將會(huì)接觸到在CVI下進(jìn)行文件操作、音頻播放、OpenGL操作、SQL數(shù)據(jù)庫(kù)查詢(xún)、剪貼板操作、動(dòng)態(tài)數(shù)據(jù)交換、ActiveX控件操作、調(diào)用.Net操作等相關(guān)內(nèi)容。在介紹相關(guān)內(nèi)容時(shí),我們只介紹原理與CVI對(duì)應(yīng)的函數(shù)功能,具體使用方法需要大家查詢(xún)CVI的幫助文檔。 3.1.1 在CVI中進(jìn)行文件操作
3、; 在程序運(yùn)行時(shí),常常需要將一些數(shù)據(jù)運(yùn)行的最終結(jié)果或中間數(shù)據(jù)輸出到磁盤(pán)上存放起來(lái),以后需要時(shí)再?gòu)拇疟P(pán)中輸入到計(jì)算機(jī)內(nèi)存。這樣就需要對(duì)文件進(jìn)行讀寫(xiě)操作,LabWindows/CVI中對(duì)文件讀寫(xiě)操作的常用函數(shù)如下: 1 OpenFile 翻開(kāi)一個(gè)文件用以讀或者寫(xiě),函數(shù)返回文件句柄; 2 CloseFile 關(guān)閉指定的文件; 3 ReadFile 從文件中讀取指定字節(jié)數(shù)的內(nèi)容到字符串緩沖區(qū); 4
4、WriteFile 將字符串緩沖區(qū)中指定字節(jié)數(shù)的內(nèi)容寫(xiě)到文件中; 5 ArrayToFile 將數(shù)組內(nèi)容保存到文件中; 6 FileToArray 從文件中讀取數(shù)據(jù)存儲(chǔ)到數(shù)組中。 7 ReadLine 從文件讀取字節(jié)直到換行。 8 WriteLine 將緩沖區(qū)中指定的字節(jié)數(shù)寫(xiě)入文件中,同時(shí)換行。 9 DeleteFile 刪除文件 &
5、#160;10 RenameFile 重命名文件 11 CopyFile 復(fù)制文件 下面給出了一個(gè)簡(jiǎn)單的新建test.txt文件,并且向文本文件中寫(xiě)入字符并讀出來(lái)的例子。 該函數(shù)運(yùn)行之后,將在工程文件夾下新建一test.txt的文本文件,文件內(nèi)容如圖 31所示。程序運(yùn)行結(jié)果如圖 32所示。圖 31 文本文件內(nèi)容圖 32 程序運(yùn)行結(jié)果 與文件讀寫(xiě)有關(guān)的函數(shù)可以在Formatting and I/
6、O Library的File I/O中找到,與文件操作有關(guān)的函數(shù)可以在Utility Library的File Utilities中找到,與文件夾有關(guān)的函數(shù)可以在Utility Library的Directory Utilities中找到。另外,ANSI C中對(duì)文件的操作的函數(shù)如fopen、fread、fputs等函數(shù)在CVI中仍然可以使用。 3.1.2 網(wǎng)絡(luò)通信:在CVI中調(diào)用TCP庫(kù) 在測(cè)控領(lǐng)域,隨著網(wǎng)絡(luò)計(jì)算、遠(yuǎn)程監(jiān)控與遠(yuǎn)程診斷等在儀器儀表領(lǐng)域的應(yīng)用與開(kāi)展,網(wǎng)絡(luò)通信已經(jīng)成為儀器的根本功能。CVI也提供了Inter
7、net庫(kù)、TCP庫(kù)、DataSocket庫(kù)以供用戶(hù)使用。 Internet庫(kù)主要提供了FTP協(xié)議、Telnet協(xié)議以及POP3協(xié)議的客戶(hù)端的函數(shù)支持。 TCP庫(kù)主要提供了基于TCP協(xié)議的網(wǎng)絡(luò)數(shù)據(jù)收發(fā)函數(shù)。 DataSocket庫(kù)提供了比TCP更加方便有效的NI推出的DataSocket的操作函數(shù)。 在本小節(jié)的介紹之前,我們假設(shè)大家已經(jīng)知道了TCP/IP協(xié)議、FTP協(xié)議、POP3協(xié)議、HTTP協(xié)議、Telnet協(xié)議
8、以及他們之間的相互關(guān)系,知道了IP地址、子網(wǎng)掩碼、DNS、網(wǎng)關(guān)是什么。假設(shè)對(duì)以上問(wèn)題有模糊之處,建議立即通過(guò)Google等手段理解這些概念。 本節(jié)主要介紹TCP通信的相關(guān)內(nèi)容。 利用TCP函數(shù)庫(kù)進(jìn)行網(wǎng)絡(luò)傳輸都要涉及效勞器端和客戶(hù)端。TCP效勞器可以通過(guò)網(wǎng)絡(luò)向用戶(hù)應(yīng)用程序發(fā)送數(shù)據(jù)和從客戶(hù)應(yīng)用程序接收數(shù)據(jù)。TCP客戶(hù)可以向TCP效勞應(yīng)用程序發(fā)送連接請(qǐng)求,并從效勞器接收數(shù)據(jù)和向效勞器發(fā)送數(shù)據(jù)。效勞器需要注冊(cè),注冊(cè)以后等待客戶(hù)向它發(fā)送連接請(qǐng)求,而客戶(hù)只能向已經(jīng)存在的效勞器發(fā)送連接請(qǐng)求。運(yùn)行TCP效勞器應(yīng)用程序的
9、計(jì)算機(jī)一般叫做主機(jī)。效勞器端的傳輸控制函數(shù)如下: 1 RegisterTCPServer 注冊(cè)TCP效勞器 2 ServerTCPRead 從客戶(hù)端讀取數(shù)據(jù) 3 ServerTCPWrite 向客戶(hù)端發(fā)送數(shù)據(jù) 4 UnregisterTCPServer 注銷(xiāo)TCP效勞器 5 DisconnectTCPClient 斷開(kāi)與客戶(hù)端的連接
10、 要是程序成為T(mén)CP效勞器,必須要運(yùn)行RegisterTCPServer函數(shù)。客戶(hù)端的傳輸控制函數(shù)如下: 1 ConnectToTCPServer 連接到TCP效勞器 2 ClientTCPServer 從效勞器讀取數(shù)據(jù) 3 ClientTCPWrite 向效勞器寫(xiě)數(shù)據(jù) 4 DisconnectFromTCPServer 斷開(kāi)與TCP效勞器的連接 另外CVI
11、的TCP庫(kù)還提供了TCP的回調(diào)函數(shù),并提供了連接開(kāi)始TCO_CONNECT、斷開(kāi)連接TCP_DISCONNECT以及數(shù)據(jù)有效TCP_DATAREADY3種消息。 下面給出了一個(gè)簡(jiǎn)單的建立TCP效勞器,并通過(guò)客戶(hù)端連接TCP效勞器的例子。在該例如程序中,TCP效勞器運(yùn)行后客戶(hù)端向效勞器發(fā)送“Hello,I'm client.的文本信息,效勞器向客戶(hù)端返回“OK信息。 TCP效勞器代碼如下: TCP客戶(hù)端的代碼如下: &
12、#160;TCP效勞器與TCP客戶(hù)端的程序分別保存在兩個(gè)不同的工程中。運(yùn)行時(shí),先運(yùn)行TCP效勞器程序,再運(yùn)行TCP客戶(hù)端程序,運(yùn)行效果如所示。圖 33 TCP例如程序運(yùn)行結(jié)果 3.1.3 網(wǎng)絡(luò)通信:在CVI中調(diào)用Internet庫(kù) Internet庫(kù)主要提供了FTP協(xié)議、Telnet協(xié)議以及POP3協(xié)議的客戶(hù)端的函數(shù)支持。 FTP是應(yīng)用層的協(xié)議,它基于TCP協(xié)議,負(fù)責(zé)進(jìn)行文件的傳輸。CVI通過(guò)封裝隱藏了一些底層的FTP操作 ,提供了兩個(gè)方便的FTP操作函數(shù):
13、 1 InetFTPAutoSend 將本地的文件傳輸?shù)街付ǖ倪h(yuǎn)程效勞器主機(jī)上 2 InetFTPAutoRetrieve 將指定遠(yuǎn)程效勞器上的文件傳輸?shù)奖緳C(jī)上。 Telnet協(xié)議也是應(yīng)用層的協(xié)議,同樣基于TCP協(xié)議,是Internet遠(yuǎn)程登陸效勞的標(biāo)準(zhǔn)協(xié)議和主要方式。CVI提供了對(duì)Telnet操作的以下函數(shù): 1 InetTelnetOpen 建立Telnet連接 2 InetTelnet
14、Read 從Telnet效勞器中讀取數(shù)據(jù) 3 InetTelnetWrite 向Telnet效勞器寫(xiě)數(shù)據(jù) 4 InetTelnetClose 關(guān)閉Telnet連接 5 InetTelnetReadUntil 從Telnet效勞器中讀取數(shù)據(jù),直到遇到指定字符或到達(dá)指定字節(jié)數(shù)或者超時(shí) 6InetTelnetRunScript 在Telnet效勞器上執(zhí)行指定的腳本 POP3
15、也是應(yīng)用層的協(xié)議,基于TCP協(xié)議,規(guī)定個(gè)人計(jì)算機(jī)如何連接到互聯(lián)網(wǎng)上的郵件效勞器進(jìn)行收發(fā)郵件。POP3協(xié)議允許用戶(hù)從效勞器上把郵件存儲(chǔ)到本地主機(jī)即自己的計(jì)算機(jī)上,同時(shí)根據(jù)客戶(hù)端的操作刪除或保存在郵件效勞器上的郵件。CVI提供了對(duì)POP3操作的以下函數(shù): 1 InetPop3Open 連接POP3效勞器 2 InetPop3Close 關(guān)閉與POP3效勞器的連接 3 InetPop3GetNumMessages 獲取POP3效勞器上的消息數(shù)量
16、0; 4 InetPop3GetMessageSize 獲取POP3效勞器上消息的大小 5 InetPop3GetMessageInfo 獲取POP3效勞器上郵件的具體信息 6 InetPop3DeleteMessage 刪除POP3效勞器上的消息 7 InetPop3GetMessage 獲取POP3電子郵件消息頭與內(nèi)容 8 InetPop3ParseMessageHeader 解析POP
17、3郵件的消息頭 3.1.4 網(wǎng)絡(luò)通信:在CVI中調(diào)用DataSocket庫(kù) 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ī)器、跨語(yǔ)言、跨進(jìn)程實(shí)時(shí)數(shù)據(jù)共享。 在測(cè)試測(cè)量過(guò)程中,用戶(hù)只
18、需要知道數(shù)據(jù)源和數(shù)據(jù)庫(kù)及需要交換的數(shù)據(jù)就可以直接進(jìn)行高層應(yīng)用程序的開(kāi)發(fā),實(shí)現(xiàn)高速數(shù)據(jù)傳輸,而不必關(guān)心 底層的實(shí)現(xiàn)細(xì)節(jié),從而簡(jiǎn)化通信程序的編寫(xiě)過(guò)程、提高編程效率。 DataSocket包括DataSocket Server Manager以下簡(jiǎn)稱(chēng)Manager,DataSocket Server和DataSocket API一局部。 Manager是一個(gè)獨(dú)立運(yùn)行的程序,主要功能有:設(shè)置DataSocket Server連接的客戶(hù)端程序的最大數(shù)目和創(chuàng)立數(shù)據(jù)項(xiàng)的最大數(shù)目:創(chuàng)立用戶(hù)組和用戶(hù);設(shè)置用戶(hù)創(chuàng)立和讀寫(xiě)數(shù)
19、據(jù)項(xiàng)的權(quán)限;限制身份不明的客戶(hù)對(duì)效勞器進(jìn)行訪(fǎng)問(wèn)和攻擊。例如,將Manager中的Default Reader設(shè)置為everyhost,那么網(wǎng)中的每臺(tái)客戶(hù)計(jì)算機(jī)都可以讀取效勞器上的數(shù)據(jù)。Manager對(duì)DataSocket Server 的配置必須在本地計(jì)算機(jī)上進(jìn)行,而不能遠(yuǎn)程配置或通過(guò)運(yùn)行程序來(lái)配置。 DataSocket Server 是一個(gè)必須運(yùn)行在效勞器端的程序,負(fù)責(zé)監(jiān)管Manager中所設(shè)定的具有各種權(quán)限的用戶(hù)組和客戶(hù)端程序之間的數(shù)據(jù)交換。DataSocket Server通過(guò)內(nèi)部數(shù)據(jù)自描述格式對(duì)TCP/IP進(jìn)行優(yōu)化和管理,簡(jiǎn)化Intern
20、et通信方式,提供自由的數(shù)據(jù)傳輸,可以直接傳送虛擬儀器程序所采集到的布爾型、數(shù)字型、字符串型、數(shù)組型和波形等常用類(lèi)型的數(shù)據(jù)。它可以和測(cè)控應(yīng)用程序安裝在同一臺(tái)計(jì)算機(jī)上,也可以分裝在不同的計(jì)算機(jī)上,以便用防火墻進(jìn)行隔離來(lái)增加整個(gè)系統(tǒng)的平安性。DataSocket Server不會(huì)占用測(cè)控計(jì)算機(jī)CPU的工作時(shí)間,測(cè)控應(yīng)用程序可以運(yùn)行得更快。使用DataSocket技術(shù)進(jìn)行通信時(shí)效勞器和客戶(hù)端得計(jì)算機(jī)上筆形都進(jìn)行DataSocket Server。 DataSocket API提供獨(dú)立的接口,用于不同的語(yǔ)言平臺(tái)內(nèi)部多種數(shù)據(jù)類(lèi)型的通讀。在LabVIEW中,D
21、ataSocket API被制作成ActiveX控件和一系列功能VI(Virtual Instrument),用戶(hù)可以方便地使用。一般由效勞器進(jìn)行數(shù)據(jù)采集,根據(jù)需要將測(cè)量地?cái)?shù)據(jù)寫(xiě)入DataSocket 數(shù)據(jù)公共區(qū),然后客戶(hù)端通過(guò)網(wǎng)絡(luò)從數(shù)據(jù)公共區(qū)讀取所需地測(cè)量數(shù)據(jù)。 DataSocket 庫(kù)函數(shù)介紹如下。 1 DS_Open創(chuàng)立 DataSocket 對(duì)象并連接到數(shù)據(jù)源 2 DS_DiscardObjHandle 釋放 DataSocket 句柄和它占用的相關(guān)
22、資源 3 DS_GetDataType 獲取 DataSocket 對(duì)象的數(shù)據(jù)類(lèi)型 4 DS_GetDataValue 獲取 DataSocket 對(duì)象相關(guān)的數(shù)據(jù)值 5 DS_SetDataValue 設(shè)置 DataSocket 對(duì)象相關(guān)的數(shù)據(jù)值 6DS_Update在寫(xiě)連接,把 DataSocket 對(duì)象的屬性和數(shù)據(jù)寫(xiě)到 DataSocket 效勞器;在讀連接,從 DataSocket 效勞器讀取 DataSo
23、cket 對(duì)象的屬性和數(shù)據(jù) 7 DS_SelectURL 允許終端用戶(hù)選擇連接的 DataSocket URL 8 DS_FreeMemory 釋放 DataSocket 庫(kù)函數(shù)占用的內(nèi)存 9 DS_GetLibraryErrorString 返回描述庫(kù)錯(cuò)誤的字符串 DataSocket是一個(gè)獨(dú)立于平臺(tái)的解決方案,限于篇幅,此處不再給出DataSocket的例如程序,感興趣的同學(xué)可以通過(guò)CVI安裝目錄下的samp
24、les中datasocket相關(guān)局部自行學(xué)習(xí)。 3.1.5 在CVI中使用音頻動(dòng)畫(huà) 在許多測(cè)控系統(tǒng)中,常常需要參加音頻、圖像、動(dòng)畫(huà)或具有互動(dòng)功能的3D模型。在本節(jié)中,我們將會(huì)詳細(xì)介紹如何向應(yīng)用程序中添加這些控件。 圖像 在程序中添加圖像相比照擬簡(jiǎn)單,CVI中直接提供了圖像控件,通過(guò)控件的幫助文檔很容易掌握在GUI中添加圖像以及通過(guò)程序更改圖像的方法。 動(dòng)畫(huà) &
25、#160; 動(dòng)畫(huà)控件是由Picture Ring圖像列表控件轉(zhuǎn)化而來(lái),在編輯界面添加PictureRing之后,通過(guò)菜單-File-Open-Function Tree*.fp,翻開(kāi)CVI安裝目錄下toolslibcustctrlanimate.fp文件,在CVI窗口的左下角即出現(xiàn)Animation Control的庫(kù)。庫(kù)中提供了如下四個(gè)函數(shù): 1 AnimateCtrl_Create 直接創(chuàng)立動(dòng)畫(huà)控件此函數(shù)會(huì)自動(dòng)在編輯界面添加Picture Ring控件,但不會(huì)自動(dòng)給Picture Ring添加圖片 &
26、#160;2 AnimateCtrl_ConvertFromPictRing 將Picture Ring控件轉(zhuǎn)換為動(dòng)畫(huà)控件 3 AnimateCtrl_SetAttribute 設(shè)置動(dòng)畫(huà)控件的屬性 4 AnimateCtrl_GetAttribute 獲取動(dòng)畫(huà)控件的屬性 另外在最新版的CVI中,Picture控件提供了gif的支持,用戶(hù)可以直接添加gif動(dòng)畫(huà)。 音頻
27、同樣CVI也提供了對(duì)音頻播放功能的支持。CVI只提供了對(duì)wav文件播放的支持,假設(shè)需要支持其他格式的文件需要調(diào)用其他的dll文件完成。函數(shù)為: sndPlaySound 播放指定文件路徑的wav文件 OpenGL CVI默認(rèn)提供對(duì)OpenGL的支持,函數(shù)庫(kù)文件為cviogl.fp,位于CVI安裝目錄的toolslibcustctrlcviogl.fp。該函數(shù)庫(kù)文件包含了控件與作圖兩個(gè)子類(lèi)的函數(shù),可以完成創(chuàng)立、更新、刪除OpenGL控件以及獲取OpenGL控件
28、屬性等功能。 尤其需要注意的是,我們不僅可以使用cviogl.fp中提供的函數(shù),OpenGL中通用的glau.lib、glu32.lib、opengl32.lib庫(kù)中的所有函數(shù)都可以使用。也就是說(shuō),OpenGL強(qiáng)大的功能也可以在CVI環(huán)境下發(fā)揮的淋漓盡致。 OpenGL本身就是一個(gè)功能強(qiáng)大的庫(kù),目前很多3D游戲都是基于OpenGL設(shè)計(jì),此處篇幅所限不再展開(kāi),感興趣的讀者可以將以前寫(xiě)的OpenGL代碼移植到CVI環(huán)境下。 3.1.6 在CVI中使用SQL ToolKit
29、160; LabWindows/CVI SQLToolkit是一個(gè)用來(lái)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的軟件工具包。工具包里包含了一個(gè)用來(lái)完成一般數(shù)據(jù)庫(kù)任務(wù)的高級(jí)函數(shù)集。在其根底上,可實(shí)現(xiàn)定制任務(wù)等高級(jí)功能的開(kāi)發(fā)。LabWindows/CVI SQL工具包提供假設(shè)干ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)器,工具包符合ODBC標(biāo)準(zhǔn),因此對(duì)任何符合ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)器均可使用。常見(jiàn)的Microsoft Office Access支持的.accdb、.mdb文件都可以通過(guò)ODBC數(shù)據(jù)庫(kù)驅(qū)動(dòng)器使用。 SQL Toolkit并不隨CVI的安裝發(fā)行包一起安裝,用戶(hù)假設(shè)
30、想使用CVI開(kāi)發(fā)數(shù)據(jù)庫(kù)需要額外從NI的官方網(wǎng)站下載: ftp:/ftp.ni /evaluation/cvi/pc/toolkits/NILWCVISQL220.exe 利用CVI SQL Toolkit進(jìn)行數(shù)據(jù)庫(kù)操作通常由以下五步完成: 連接數(shù)據(jù)庫(kù)-激活SQL連接-處理SQL語(yǔ)句-斷開(kāi)SQL連接-斷開(kāi)數(shù)據(jù)庫(kù)。 圖 35提供了使用SQL Toolkit實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作的流程圖,一般對(duì)ODBC數(shù)據(jù)庫(kù)進(jìn)行操作都是根據(jù)圖
31、 35的說(shuō)明依次調(diào)用內(nèi)部的函數(shù)實(shí)現(xiàn)的。 連接數(shù)據(jù)庫(kù) CVI提供的連接數(shù)據(jù)庫(kù)的函數(shù)只有一個(gè):DBConnect。 DBConnect的參數(shù)為ODBC連接字符串。ODBC連接字符串可以在ODBC數(shù)據(jù)源管理器在“開(kāi)始菜單-“程序-“管理工具-“數(shù)據(jù)源 (ODBC)中翻開(kāi)的系統(tǒng)DSN中添加。如圖 34所示的第一個(gè)數(shù)據(jù)庫(kù)的連接字符串應(yīng)該為: "DSN=CVI SQL Samples"
32、0; 激活SQL連接 CVI提供了兩種激活SQL連接的方式:自動(dòng)SQL和顯式SQL。自動(dòng)SQL對(duì)應(yīng)圖 35的DBBeginMap及下面的系列函數(shù),只能構(gòu)造簡(jiǎn)單的SELECT語(yǔ)句和CREATE TABLE語(yǔ)句。顯式SQL對(duì)應(yīng)圖 35的DBActivateSQL及下方的系列函數(shù),可以執(zhí)行更復(fù)雜的SELECT語(yǔ)句以及其他語(yǔ)句。 處理SQL語(yǔ)句 使用SELECT語(yǔ)句必須將選擇的字段綁定到程序中的變量上。接著用取值函數(shù)獲取所選記錄。每次調(diào)用取值函
33、數(shù),工具包將列變量拷貝到在程序中綁定的變量。更新行或創(chuàng)立行時(shí)還可用綁定的變量,即更新行或創(chuàng)立行時(shí)將新值拷貝到綁定的變量并隨后調(diào)用適當(dāng)?shù)暮瘮?shù),將程序中的數(shù)據(jù)添加到數(shù)據(jù)庫(kù)對(duì)應(yīng)的字段。CVI SQL Toolkit提供了DBMapColumnTo函數(shù)以及DBBindCol函數(shù)如圖 35,幫助用戶(hù)綁定數(shù)據(jù)庫(kù)的對(duì)應(yīng)數(shù)據(jù)到變量中。 斷開(kāi)SQL連接 SQL操作后,應(yīng)該斷開(kāi)SQL連接來(lái)釋放系統(tǒng)資源。對(duì)于自動(dòng)SQL連接,使用DBDeactivateMap函數(shù),對(duì)于顯式SQL連接,使用DBDeactivateSQL函數(shù)。&
34、#160; 斷開(kāi)數(shù)據(jù)庫(kù)連接 數(shù)據(jù)庫(kù)操作結(jié)束后,應(yīng)該斷開(kāi)數(shù)據(jù)庫(kù)連接來(lái)釋放系統(tǒng)資源。CVI提供了DEDisconnect斷開(kāi)連接。 具體的函數(shù)使用說(shuō)明參見(jiàn)CVI安裝目錄中bincvisqlref.chm的幫助文件。圖 34 ODBC數(shù)據(jù)源管理器圖 35 CVI SQL Toolkit函數(shù)庫(kù)使用流程圖 從上面的圖 35可以看出,假設(shè)不需要綁定變量,那么可使用DBImmediateSQL執(zhí)行一個(gè)SQL語(yǔ)句,更加方
35、便快捷。 下面的例子給出了從數(shù)據(jù)庫(kù)的USERS表中查找用戶(hù)ID為2的用戶(hù)名與用戶(hù)年齡的完整代碼。USER表數(shù)據(jù)庫(kù)參見(jiàn)圖 36。其中ID為自動(dòng)編號(hào)類(lèi)型,UserName為文本類(lèi)型,Age為數(shù)字類(lèi)型。運(yùn)行代碼前,需要實(shí)現(xiàn)在數(shù)據(jù)源ODBC管理器中添加數(shù)據(jù)源名為“CVI SQL Samples的mdf文件。圖 36 數(shù)據(jù)庫(kù)USERS表 3.1.7 在CVI中使用剪貼板與動(dòng)態(tài)數(shù)據(jù)交換DDE 剪貼板ClipBoard與動(dòng)態(tài)數(shù)據(jù)交換DDE,Dynamic Data Excha
36、nge都是用于用于應(yīng)用程序交換數(shù)據(jù)共享信息的工具和途徑,廣泛應(yīng)用于Windows操作系統(tǒng)中。 CVI對(duì)于剪貼板提供了四個(gè)函數(shù),分別提供了向剪貼板中寫(xiě)入文本、圖像以及從剪貼板中讀出文本、圖像的功能。 1 ClipboardPutText 向剪貼板拷貝文本格式的數(shù)據(jù) 2 ClipboardPutBitmap 向剪貼板拷貝位圖格式的數(shù)據(jù) 3 ClipboardGetText 從剪貼板中讀取文本格式的數(shù)據(jù)
37、160; 4 ClipboardGetBitmap 從剪貼板中讀取位圖格式的數(shù)據(jù) 使用DDE通訊需要兩個(gè)Windows應(yīng)用程序,其中一個(gè)作為效勞器處理信息,另外一個(gè)作為客戶(hù)機(jī)從效勞器獲得信息。客戶(hù)機(jī)應(yīng)用程序向當(dāng)前所激活的效勞器應(yīng)用程序發(fā)送一條消息請(qǐng)求信息,效勞器應(yīng)用程序根據(jù)該信息作出應(yīng)答,從而實(shí)現(xiàn)兩個(gè)程序之間的數(shù)據(jù)交換。 DDE最早是隨著Windows3.1由微軟公司提出的,雖然目前很多軟件支持DDE,但是目前諸多公司已經(jīng)停止了對(duì)DDE的支持。 &
38、#160;DDE通常用來(lái)在程序中實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)保存為Excel或者Word中,但是CVI提供了效率更高更易用的ActiveX控件的功能,可以到達(dá)同樣的目的。 3.1.8 在CVI中進(jìn)行ActiveX控件操作 ActiveX是Microsoft對(duì)于一系列策略性面向?qū)ο蟪绦蚣夹g(shù)和工具的稱(chēng)呼,其中主要的技術(shù)是組件對(duì)象模型COM,可被其他應(yīng)用程序編程驅(qū)動(dòng),實(shí)現(xiàn)特殊的程序間調(diào)用功能。COM組件ActiveX控件可由不同語(yǔ)言的開(kāi)發(fā)工具開(kāi)發(fā),VC、PowerBuilder等編程開(kāi)發(fā)工具均可開(kāi)發(fā)ActiveX控件。
39、0; ActiveX在廣義上是指微軟公司的整個(gè)COM架構(gòu),但是現(xiàn)在通常用來(lái)稱(chēng)呼基于標(biāo)準(zhǔn)COM接口來(lái)實(shí)現(xiàn)對(duì)象連接與嵌入的ActiveX控件,常常用于在IE中增加豐富的擴(kuò)展功能。而在本教程中,我們提到的ActiveX控件均指的廣義上的ActiveX控件,即基于COM模型的開(kāi)發(fā)組件。 點(diǎn)擊CVI菜單Tools-Create ActiveX Controller,翻開(kāi)創(chuàng)立ActiveX Controller Wizard,點(diǎn)擊Next即可發(fā)現(xiàn)有大量可供我們使用的ActiveX控件。通過(guò)添加適當(dāng)?shù)腁ctiveX控件,我們不僅可
40、以從常用的Office軟件中寫(xiě)入、讀取數(shù)據(jù),操作數(shù)據(jù)庫(kù),獲取與Matlab的接口以使用Matlab進(jìn)行數(shù)據(jù)處理,還可以利用AutoCAD、QQ、IE、PowerDesigner、SolidWorks等諸多領(lǐng)域主流的軟件的組件進(jìn)行相關(guān)程序的編寫(xiě)。 限于篇幅,本節(jié)只以一個(gè)實(shí)例向大家介紹使用ActiveX控件開(kāi)發(fā)應(yīng)用程序的根本過(guò)程與方法。在這個(gè)實(shí)例中,我們將通過(guò)Microsoft Excel 9.0 Object Lib這個(gè)ActiveX控件翻開(kāi)Excel文件并向其中寫(xiě)入099這100個(gè)數(shù)據(jù)并將Excel文件保存在指定位置。
41、60; 假設(shè)我們計(jì)算機(jī)上安裝了Office2000。單擊CVI菜單Tools-Create ActiveX Controller,點(diǎn)擊下一步,在ActiveX Server選項(xiàng)中找到Microsoft Excel 9.0,點(diǎn)擊下一步,選擇函數(shù)庫(kù).fp文件保存的位置之后,CVI即在當(dāng)前工程中添加了Microsoft Excel 9.0 Object Lib的相關(guān)庫(kù)文件。 假設(shè)在計(jì)算機(jī)上安裝的Office版本不是2000,那也沒(méi)關(guān)系,從CVI安裝目錄中的“samplesactivexexcel中找到excel2000.fp、exce
42、l2000.h、excel2000.obj和excel2000.sub文件,將此四個(gè)文件復(fù)制到工程目錄下,將fp文件添加到當(dāng)前工程中之后同樣可以到達(dá)添加Microsoft Excel 9.0 Object Lib庫(kù)的功能。 在工程的C語(yǔ)言文件中輸入以下代碼: 上面的例子運(yùn)行后,將會(huì)在系統(tǒng)的D盤(pán)根目錄下多出一份叫做123.xls的Excel文件。翻開(kāi)Excel文件之后,發(fā)現(xiàn)Excel中數(shù)據(jù)如所示。圖 37 ActiveX控件例如程序運(yùn)行結(jié)果 在上面的例子中,我
43、們依次通過(guò)獲取Excel的程序句柄、獲取Excel的工作簿組句柄、獲取Excel的工作簿句柄、獲取Excel的工作表組句柄、獲取Excel的工作表句柄、獲取Excel第一個(gè)工作表句柄,最終獲取Excel工作表的范圍句柄。獲取了Excel工作表句柄之后便可對(duì)工作表指定區(qū)域內(nèi)的內(nèi)容進(jìn)行操作了。操作結(jié)束之后,務(wù)必將獲取的句柄逐個(gè)銷(xiāo)毀,否那么會(huì)導(dǎo)致系統(tǒng)資源被占用,生成的文件被占用,無(wú)法進(jìn)行后續(xù)操作。 利用ActiveX控件在CVI下可以實(shí)現(xiàn)諸多有用的功能,但是仍然不可防止的存在有的ActiveX控件無(wú)法找到的問(wèn)題。在Windows下可以“開(kāi)始菜單-“運(yùn)行中
44、輸入regsvr32命令以注冊(cè)Active控件。詳細(xì)信息可自行通過(guò)幫助文檔或者Google查找。3.2 自動(dòng)化測(cè)試接口編程 3.2.1 綜述 自動(dòng)化測(cè)試系統(tǒng)ATS,Automatic Test System是指測(cè)試儀器在計(jì)算機(jī)的控制下,向被測(cè)對(duì)象按照一定的時(shí)序和順序提供鼓勵(lì),同時(shí)對(duì)被測(cè)對(duì)象在該鼓勵(lì)下的響應(yīng)進(jìn)行測(cè)量的系統(tǒng)。自從20世紀(jì)70年代惠普正式推出了第一種測(cè)試總線(xiàn)GPIB以來(lái),先后出現(xiàn)了GPIB、VXI、PXI以及LXI等大量測(cè)試總線(xiàn)。 此外,在PC接口方面,PCI
45、、ISA、RS232、USB、1394、CAN等總線(xiàn)也得到了廣泛的開(kāi)展和利用,也有不少總線(xiàn)如ISA總線(xiàn)因?yàn)閹掚y以滿(mǎn)足當(dāng)今大局部的需求而逐漸退出歷史舞臺(tái)。 GPIB總線(xiàn)是在美國(guó) HP公司一種1965年推出的的儀器接口系統(tǒng) (HP-IB)開(kāi)展起來(lái)的。GPIB接口具有以下根本特性:測(cè)試系統(tǒng)所使用的全部?jī)x器和計(jì)算機(jī)均通過(guò)一組標(biāo)準(zhǔn)母線(xiàn)相互連接,儀器“并聯(lián)在系統(tǒng)內(nèi)部,同時(shí)儀器之間可以直接 “通話(huà)。 GPIB總線(xiàn)的母線(xiàn)由16條信號(hào)線(xiàn)構(gòu)成,其器件容量為15臺(tái),在GPIB 系統(tǒng)中,GPIB接口共定義了10種接口功能:控者功能、講者功能、聽(tīng)者功能,源方掛鉤功能、受方
46、掛鉤功能,效勞請(qǐng)求功能、并行查詢(xún)功能、遠(yuǎn)程控制本功能、器件觸發(fā)功能、器件去除功能。在2007年的第三季度,由測(cè)試與測(cè)量領(lǐng)導(dǎo)廠(chǎng)商發(fā)布的新型儀器中,超過(guò)80%含有GPIB接口。 VXI總線(xiàn)VMEbus Extensions For Instrumentation是于 1987年推出的總線(xiàn)標(biāo)準(zhǔn) ,根據(jù)器件支持的通信協(xié)議,VXI器件分成4類(lèi):消息基器件、存放器基器件、存儲(chǔ)器器件、擴(kuò)展器件。一個(gè)VXI機(jī)箱具有13個(gè)擴(kuò)展槽 (1個(gè)系統(tǒng)槽和 12個(gè)儀器模塊槽)。 PXI總線(xiàn)PCI Extensions for Ins
47、trumentation是 1997年發(fā)布的總線(xiàn)標(biāo)準(zhǔn)。 PXI是 PCI總線(xiàn)在儀器領(lǐng)域的擴(kuò)展,與 CompactPCI兼容,可提供同步、觸發(fā)和時(shí)鐘等方面的信號(hào),一個(gè) PXI機(jī)箱具有 8個(gè)擴(kuò)展槽 (1個(gè)系統(tǒng)槽和7個(gè)儀器模塊槽)。 LXI總線(xiàn)(LAN Extension for Instrument是由國(guó)際LXI聯(lián)盟LXI Consortium針對(duì)GPIB傳輸速率低、VXI機(jī)箱昂貴并且需要零槽控制器、PXI尺寸電源以及EMI方面等問(wèn)題而提出的一種低本錢(qián)小體積的靈活的自動(dòng)化測(cè)試總線(xiàn)技術(shù)。LXI在以太網(wǎng)的物理標(biāo)準(zhǔn)下,基于以太網(wǎng)的根底,提供了網(wǎng)絡(luò)界面,并且具
48、有可選擇的觸發(fā)方式LAN,IEEE1588,Trigger Bus。 VXI、PXI、PXIe、LXI都是VME、PCI、PCIe、LAN 等PC接口在自動(dòng)化測(cè)試系統(tǒng)總線(xiàn)領(lǐng)域的延伸。不管是VME-VXI、PCI-PXI、PCIe-PXIe還是LAN-LXI,根本的物理傳輸層都沒(méi)有改變或僅參加了測(cè)試系統(tǒng)需要的時(shí)鐘同步、觸發(fā)等信號(hào)線(xiàn),在上層的協(xié)議中也很少發(fā)生改變,僅某些接口的機(jī)械構(gòu)造發(fā)生了相應(yīng)的改變。所以,PC上的接口驅(qū)動(dòng)技術(shù)同樣可以運(yùn)用到自動(dòng)化測(cè)試系統(tǒng)中。 世界上沒(méi)有任何一種總線(xiàn)是萬(wàn)能的,每一種總線(xiàn)都具有
49、不同的帶寬、時(shí)延、性能、軟件支持、魯棒性、體積、傳輸距離乃至本錢(qián)等特性,通過(guò)了解系統(tǒng)需求選用最適宜的總線(xiàn)技術(shù)才最重要。圖 38列出了常用的測(cè)試總線(xiàn)技術(shù)的帶寬與延時(shí)的性能的比擬。圖 38 常用測(cè)試總線(xiàn)技術(shù)帶寬與時(shí)延比擬 3.2.2 GPIB接口 GPIB是一種在業(yè)界已經(jīng)得到證明的專(zhuān)為儀器控制應(yīng)用設(shè)計(jì)的總線(xiàn)。GPIB在過(guò)去30年來(lái)一直是魯棒的、可靠的通信總線(xiàn),由于其低時(shí)延和可接受的帶寬的特點(diǎn),GPIB目前仍然是儀器控制中最常見(jiàn)的選擇。GPIB的優(yōu)勢(shì)在于為業(yè)界廣泛采納,并有超過(guò)10,000種儀器模型
50、帶有GPIB接口。 由于其最大帶寬為1.8 MB/s,GPIB最為適合與分立儀器通信,并對(duì)分立儀器進(jìn)行控制。最新的高速版HS488將帶寬提高到8 MB/s。GPIB中的數(shù)據(jù)傳遞采用基于信息的通信模式,并最常使用ASCII字符。多個(gè)GPIB儀器可以通過(guò)電纜連接,其總距為20米,帶寬為總線(xiàn)上的所有儀器共享。雖然GPIB的帶寬相對(duì)較低,但其時(shí)延要比USB尤其比以太網(wǎng)低得多即性能好。盡管GPIB有目前最好的軟件,而且穩(wěn)定的線(xiàn)纜和連接器也能適合最?lèi)毫拥奈锢憝h(huán)境,但GPIB儀器在連接到系統(tǒng)時(shí),并不能自動(dòng)檢測(cè)或自動(dòng)配置。對(duì)于現(xiàn)有儀器的自動(dòng)化或要求高度專(zhuān)業(yè)化儀器的
51、系統(tǒng),GPIB是理想的選擇。圖 39 GPIB接口外觀(guān)圖 310 GPIB接口引腳圖 除了地線(xiàn)外,GPIB接口一共具有16條信號(hào)線(xiàn),分別為8條信號(hào)線(xiàn)D1D8、3條掛鉤線(xiàn)DAV、NRED、NDAC以及5條管理線(xiàn)ATN、IFC、REN、EOI、SRQ。各條線(xiàn)纜的作用如下: 1 D1D8:8條數(shù)據(jù)線(xiàn),既可做輸入又可做輸出 2 DAVData Valid:數(shù)據(jù)有效線(xiàn),用于源方向受方發(fā)出通知可以從數(shù)據(jù)線(xiàn)上拉取數(shù)據(jù) 3 NR
52、EDNot Ready For Data:數(shù)據(jù)沒(méi)有準(zhǔn)備好,用于受方向源方發(fā)出通知以告知源方不能在數(shù)據(jù)線(xiàn)上傳遞消息 4 NDACNo Data Accepted:數(shù)據(jù)未接受:用于受方向源方通知至少還有一個(gè)器件尚未從數(shù)據(jù)線(xiàn)上拉取數(shù)據(jù) 5 ATNAttention:注意線(xiàn),表示數(shù)據(jù)線(xiàn)上的數(shù)據(jù)是由現(xiàn)在總線(xiàn)上的主控器件發(fā)出的 6 IFCInterface Clear:接口去除線(xiàn),用于現(xiàn)在總線(xiàn)上的主控器件要求其他器件的接口回到指定的初始狀態(tài)
53、60; 7 RENRemote Enable:遠(yuǎn)控可能線(xiàn),用于現(xiàn)在總線(xiàn)上的主控器件發(fā)送REN消息,以使得接收者進(jìn)入遠(yuǎn)地程控狀態(tài) 8 EOIEnd Or Identify:結(jié)束或識(shí)別線(xiàn),用于現(xiàn)在總線(xiàn)上的主控器件或者源方發(fā)送END結(jié)束消息或者IDY識(shí)別消息。 9 SRQService Request:效勞請(qǐng)求線(xiàn),由由效勞請(qǐng)求的各器件共同使用,是各器件的邏輯或。 CVI對(duì)GPIB提供了函數(shù)庫(kù)并提供了諸多強(qiáng)大的函數(shù):
54、160;1 OpenDev 尋找一個(gè)未使用的GPIB設(shè)備并翻開(kāi)設(shè)備 2 ibdev 翻開(kāi)設(shè)備同時(shí)設(shè)置GPIB參數(shù) 3 ibfind 通過(guò)設(shè)備名稱(chēng)獲取設(shè)備的唯一描述符 4 Ibpad 設(shè)置GPIB板主地址 5 Ibsad 設(shè)置GPIB板輔助地址 6 Ibbna 設(shè)置訪(fǎng)問(wèn)的GPIB板 7 Ibtmo 設(shè)置超時(shí)限制 &
55、#160; 8 Ibeos 設(shè)置字符串結(jié)束標(biāo)志 9 Ibeot 設(shè)置傳輸結(jié)束后是否發(fā)送消息 10 Ibdma 設(shè)置是否啟動(dòng)直接內(nèi)存訪(fǎng)問(wèn)模式 11 Ibrsc 設(shè)置GPIB請(qǐng)求或者放棄系統(tǒng)控制 12 Ibconfig 設(shè)置配置參數(shù) 13 Ibask 獲得配置參數(shù) 14 ibrd 從設(shè)備中讀出指定長(zhǎng)度的數(shù)
56、據(jù) 15 ibrda 從設(shè)備中一部讀出指定長(zhǎng)度的數(shù)據(jù) 16 ibrdf 從設(shè)備中讀出數(shù)據(jù)并儲(chǔ)存在指定的文件中 17 ibwrt 向設(shè)備寫(xiě)入指定長(zhǎng)度的數(shù)據(jù) 18 ibwrta 向設(shè)備異步寫(xiě)入指定長(zhǎng)度的數(shù)據(jù) 19 ibwrtf 從指定文件中向設(shè)備寫(xiě)入數(shù)據(jù) 20 ibstop 終止指定設(shè)備的異步I/O操作
57、 21 ibInstallCallback 安裝GPIB回調(diào)函數(shù) 以上函數(shù)的詳細(xì)使用說(shuō)明參見(jiàn)CVI幫助文檔,限于篇幅,此處不再做具體的例如與說(shuō)明。 3.2.3 RS232接口 RS-232標(biāo)準(zhǔn)是美國(guó)電子工業(yè)協(xié)會(huì)EIA等于1969年開(kāi)發(fā)并公布的通信協(xié)議,適用于傳輸速率在020kb/s的異步數(shù)據(jù)傳輸。 串行接口是計(jì)算機(jī)通信必不可少的標(biāo)準(zhǔn)配置,幾乎每一臺(tái)計(jì)算機(jī)、外設(shè)、智能儀器都配有標(biāo)準(zhǔn)串行接口。采用標(biāo)準(zhǔn)串行接口后,各種計(jì)
58、算機(jī)、外部設(shè)備、智能儀器就能有機(jī)的連接起來(lái)進(jìn)行串行通信。為方便用戶(hù)進(jìn)行 RS-232 編程,LabWindows/CVI 提供了RS-232函數(shù)庫(kù)。 RS-232C 的機(jī)械指標(biāo)規(guī)定: RS-232C接口通向外部的連接器 插針插座 是一種 “D型 25 針插頭。由于 25 芯中有許多是不常用的,IBM-PC 對(duì)其進(jìn)行了簡(jiǎn)化,取了其中的常用的 9 芯,構(gòu)成了 9 芯 RS-232C 串行接口,使其成為一種事實(shí)上的串行接口標(biāo)準(zhǔn)配置。RS-232C 的“D型 9 針插頭引腳定義如圖 311所示。圖 311 “D型9針插頭引腳定義圖
59、160; RS-232C 標(biāo)準(zhǔn)接口中的主要信號(hào)是“發(fā)送數(shù)據(jù)和“接收數(shù)據(jù) ,它們用來(lái)在兩個(gè)系統(tǒng)或設(shè)備之間傳送串行信息。對(duì)于異步通信,傳輸?shù)拇形粩?shù)據(jù)信息的單位是字符。 圖 312示出了 RS-232C以位串行方式傳輸數(shù)據(jù)的格式,這是微機(jī)系統(tǒng)中最通用的格式。7 位 ASCII 碼數(shù)據(jù)的連續(xù)傳送由最低有效數(shù)字位開(kāi)始,而以奇偶校驗(yàn)位結(jié)束。應(yīng)當(dāng)指出,RS-232C 標(biāo)準(zhǔn)接口并不限于 ASCII 數(shù)據(jù),事實(shí)上還可有 5 到 8 個(gè)數(shù)據(jù)位,后加一奇偶校驗(yàn)位,并有 1 或 2 位停止位。圖 312 串行數(shù)據(jù)傳輸格式
60、60; 在電性能方面,這一標(biāo)準(zhǔn)使用負(fù)邏輯。邏輯 1電平是在-15V 到-5V范圍內(nèi),邏輯 0電平那么在+5V到+15V范圍內(nèi)。 它要求 RS-232C接收器必須能識(shí)別低至+3V的信號(hào)作為邏輯 0,而識(shí)別高至-3V的信號(hào)作為邏輯 1,這意味著有 2V的噪聲容限。RS-232C 進(jìn)行數(shù)據(jù)傳輸?shù)淖罡咚俾蕿?20KB/S,通信距離最長(zhǎng)為 15m。 作為PC上最常用的工業(yè)接口之一,CVI提供的RS-232庫(kù)同樣具有強(qiáng)大的功能。常用的RS-232庫(kù)函數(shù)如下: 1 OpenComConfig 翻
61、開(kāi)一個(gè)串行并進(jìn)行相關(guān)的參數(shù)設(shè)置 2 CloseCom 關(guān)閉一個(gè)串行口 3 ComRd 從指定串行口的輸入隊(duì)列讀取假設(shè)干字節(jié)的信息 4 ComRdByte 從指定串行口的輸入隊(duì)列讀取一個(gè)字節(jié)的信息 5 ComWrt 向指定串行口的輸出隊(duì)列寫(xiě)假設(shè)干字節(jié)的信息 6 ComWrtByte 向指定串行口的輸出隊(duì)列寫(xiě)一個(gè)字節(jié)的信息 7
62、 FlushInQ 清空指定串行口的輸入隊(duì)列 8 FlushOutQ 清空指定串行口的輸出隊(duì)列 9 GetInQLen 獲取指定串行口輸入隊(duì)列內(nèi)的字符數(shù) 10 GetOutQLen 獲取指定串行口輸出隊(duì)列內(nèi)的字符數(shù) 11 InstallComCallback 為指定串行口設(shè)置一個(gè)回調(diào)函數(shù) 下面即是一個(gè)向環(huán)境參數(shù)測(cè)量的單片機(jī)發(fā)送“gettemp命令獲取當(dāng)前的溫度值并且讀
63、取返回的值的例子。 編譯以上代碼,假設(shè)編譯生成的exe程序名稱(chēng)為ComTest_dbg.exe,在命令行中輸入“ComTest_dbg.exe gettemp,那么程序運(yùn)行結(jié)果如圖 313所示。圖 313 獲取溫度值運(yùn)行結(jié)果 3.2.4 VXI、PXI通信VISA VXI、PXI作為應(yīng)用最為廣泛的自動(dòng)化測(cè)試總線(xiàn)之一,在工業(yè)及自動(dòng)化測(cè)試領(lǐng)域得到了廣泛的應(yīng)用。為此類(lèi)設(shè)備開(kāi)發(fā)驅(qū)動(dòng)程序可以使用微軟公司的WDMWin32 Driver Model模型進(jìn)行開(kāi)發(fā),但由于自動(dòng)化測(cè)試總線(xiàn)的
64、高速開(kāi)展,這樣的驅(qū)動(dòng)開(kāi)發(fā)方法工作量相對(duì)較大且上層代碼不具備通用性,因此CVI并沒(méi)有直接提供VXI或者PXI的函數(shù)庫(kù)。 VXI設(shè)備、PXI設(shè)備都遵從VPPVXI Plug and Play標(biāo)準(zhǔn),其驅(qū)動(dòng)程序都使用單一的標(biāo)準(zhǔn)結(jié)構(gòu)。因此,NI等公司提出來(lái)了虛擬儀器軟件架構(gòu)VISA,Virtual Instrumentation Software Architecture給符合VPP硬件標(biāo)準(zhǔn)的接口設(shè)備提供了軟件標(biāo)準(zhǔn)與統(tǒng)一的驅(qū)動(dòng)。全世界虛擬儀器廠(chǎng)家以該接口軟件作為底層函數(shù)庫(kù)來(lái)開(kāi)發(fā)虛擬儀器程序,可以使不同廠(chǎng)商的軟件在同一平臺(tái)上協(xié)調(diào)運(yùn)行。這大大減少了軟件的重復(fù)開(kāi)發(fā),縮短了測(cè)試應(yīng)用程
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞動(dòng)合同勞務(wù)合同范例
- 公司合并協(xié)議合同范本
- 全職合同范本
- 醫(yī)院物業(yè)招聘合同范本
- 加盟快遞押金合同范本
- 單位電線(xiàn)更換維修合同范本
- 聲學(xué)顧問(wèn)合同范本
- 單位車(chē)棚工程合同范本
- cpvc管購(gòu)買(mǎi)合同范本
- ul認(rèn)證合同范本
- 高中主題班會(huì) 悟哪吒精神做英雄少年-下學(xué)期開(kāi)學(xué)第一課主題班會(huì)課件-高中主題班會(huì)課件
- 2025電力物資檢儲(chǔ)配一體化建設(shè)技術(shù)導(dǎo)則
- 新學(xué)期 開(kāi)學(xué)第一課 主題班會(huì)課件
- 民法典合同編講座
- 2024年青島港灣職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 廣西壯族自治區(qū)公路發(fā)展中心2025年面向社會(huì)公開(kāi)招聘657名工作人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 大學(xué)轉(zhuǎn)專(zhuān)業(yè)高等數(shù)學(xué)試卷
- DBJ51-T 198-2022 四川省既有民用建筑結(jié)構(gòu)安全隱患排查技術(shù)標(biāo)準(zhǔn)
- 公司廠(chǎng)區(qū)保潔培訓(xùn)
- 江蘇省招標(biāo)中心有限公司招聘筆試沖刺題2025
- 2024年防盜門(mén)銷(xiāo)售合同范本
評(píng)論
0/150
提交評(píng)論