Labview基本常見問題解答(三)
1、 如何用LV與可編程儀器通信,該儀器沒有GPIB接口,但有COM口,能否用LV操作?A:可以通過LV的串口通信來解決儀器控制問題,參看FIND EXAMPLE的BASIC 2 PORT SERIAL WRITE AND READ.VI
本文引用地址:http://m.butianyuan.cn/article/193753.htm2、 如何將EVENTSTRUCT中捕獲的時(shí)間傳遞到STATE DIAGRAM?A:使用VENTSTRUCT捕獲面板事件后,將不同的事件對應(yīng)于不同的字符串和其他,再通過QUEUE將VENTSTRUCT中的字符串傳遞到STATEDIAGRAM中,再根據(jù)得到的字符串進(jìn)行相應(yīng)的處理。
3、 使用WRITE TO BINARY FILE函數(shù)向二進(jìn)制文件中寫入一個(gè)1D數(shù)組,為什么在READ FROM BIANRY FILE讀取時(shí),會(huì)多出4個(gè)字節(jié)數(shù)據(jù)呢?A:寫入時(shí)加入了頭信息,多出的4個(gè)字節(jié)就是頭信息,代表了數(shù)組或字符串的長度。在WRITE TO BINARY FILE 中的APPEND ARRAY OR STING SIZE這個(gè)輸入端口中設(shè)置,其默認(rèn)值為T,代表加入頭信息;如果將其改為F,就不會(huì)多出4個(gè)字節(jié)了。
4、 卸載7.1時(shí)出現(xiàn)錯(cuò)誤1603,接著出現(xiàn)錯(cuò)誤1722和1721,程序詢問是否繼續(xù)卸載操作,怎樣消除該錯(cuò)誤并正確卸載7.1?A:該錯(cuò)誤通常出現(xiàn)在試圖卸載某些共享組件的時(shí)候。按照以下步驟可以解決該問題。1) 注意當(dāng)錯(cuò)誤發(fā)生時(shí)是在卸載哪一部分組件。一般講在卸載LV核心部分或LV RUNTIME ENGINE的時(shí)候容易出現(xiàn)。2) 當(dāng)出現(xiàn)錯(cuò)誤代碼1603,彈出對話框提示繼續(xù)卸載操作時(shí)候,點(diǎn)擊YES3) 如果卸載完成之后提示需要重新啟動(dòng)計(jì)算機(jī),點(diǎn)擊NO。4) 對于卸載過程中產(chǎn)生的錯(cuò)誤,從CD相應(yīng)的文件夾中手動(dòng)運(yùn)行相應(yīng)的組件,路經(jīng)如下:componentslvcorefulllvcorefull.msi或componentslvruntimeenglvruntimeeng.msi點(diǎn)擊修復(fù)按鈕。5) 修復(fù)之后再次運(yùn)行這些MSI,選擇卸載按鈕。這樣就可以完全卸載。
5、7.1在編寫大型程序時(shí)希望優(yōu)化計(jì)算機(jī)的內(nèi)存使用,那么需要考慮哪些內(nèi)容?A:1)、將VI分解為SUBVI,當(dāng)SUBVI不再被執(zhí)行的時(shí)候,LV能夠釋放它的內(nèi)存。 2)、盡可能少使用全局變量或局部變量,這兩者會(huì)造成LV為數(shù)據(jù)備份。 3)、在需要時(shí)才在打開的前面板上顯示大型數(shù)組和字符串,因?yàn)榍懊姘宓娘@示控件需要復(fù)制他們顯示的數(shù)據(jù)。 4)、屬性節(jié)點(diǎn)會(huì)造成SUBVI的前面板滯留在內(nèi)存中,這樣會(huì)增加內(nèi)存的使用。因此,如果SUBVI的前面板不被顯示,不要在SUBVI中使用屬性節(jié)點(diǎn)。 5)、盡量在數(shù)組中使用相同的數(shù)據(jù)類型,并在傳輸數(shù)據(jù)進(jìn)入子VI使用強(qiáng)制小數(shù)點(diǎn)位置。當(dāng)LV改變數(shù)據(jù)類型,輸出需要一個(gè)新的緩存。 6)、當(dāng)設(shè)計(jì)流程圖,要注意任何輸入大小與輸出的大小不同的地方。EG:頻繁的增加數(shù)組或者字符串的大小將造成數(shù)據(jù)的多次復(fù)制。造成內(nèi)存增加,并造成內(nèi)存碎片。
6、 在LV7.1中生成可執(zhí)行文件后運(yùn)行出現(xiàn)如下錯(cuò)誤:“Executable version(7.1.1) doesn’t match resource file(7.1)”怎樣消除錯(cuò)誤?A:這種情況是由于LV7.1.1Run-time Engine安裝損壞或者版本不兼容造成的。解決如下:1) 到控制面板---添加或者刪除程序2) 選擇National Instruments Software點(diǎn)擊更改3) 在National Instruments Software對話框選擇LV7.1.1Run-time Engine點(diǎn)擊修復(fù)附注:安裝了LV Run-time Engine7.1.1后,在MAX的software里一般看不到LV7.1.1Run-time Engine7.1.1,只能在控制面板里看到。
7、 VISA Set I/O Buffer SizeA:可以完成對緩存的設(shè)置,放的位置一定要跟在串口配置VI的后面,MASK的設(shè)置要對,如果不設(shè)置,默認(rèn)值為4096Bytes,如果需要用串口讀取的數(shù)據(jù)比這個(gè)大,就會(huì)造成數(shù)據(jù)丟失。
8、 如何將CVI驅(qū)動(dòng)程序(fp文件)轉(zhuǎn)換成LV的驅(qū)動(dòng)程序?A:LV自帶這個(gè)功能。在TOOLS的Instrumentation 中的Import Instrument from CVI Fp菜單里。
9、 LV7.1如何創(chuàng)建控件以自定義圖片方式顯示?A:在前面板放上要?jiǎng)?chuàng)建的控件類型,選中它后點(diǎn)擊EDIT---CUSOMIZE CONTROL進(jìn)入編輯面板,用工具欄的控件變成CUSTOMIZE MODE,EDIT—Import Picture From File選擇要顯示的圖片,右擊前面板的控件點(diǎn)Import Picture。切回Edit Mode。右擊控件選擇Import Picture然后選擇方式。同樣操作其他圖片。
10、 如何把LV前面板控件當(dāng)前值通過程序設(shè)為下次打開時(shí)的默認(rèn)值?A:方法如下1) 手動(dòng)操作:對控件點(diǎn)擊鼠標(biāo)右鍵----Data Operations---Make Current Value Default。2) 通過文件或注冊表方式先把控件當(dāng)前值存下來,再下次打開時(shí)再從文件或注冊表把值讀回來。3) 使用VI Server技術(shù)在保存控件當(dāng)前值為默認(rèn)值,但這種方法只能處于編輯狀態(tài)使用,在生成exe文件后不能使用。操作如下(1) 調(diào)用Invoke Node設(shè)VI的Edit Mode值為TRUE(2) 調(diào)用Invoke Node設(shè)Make Current Value Default(3) 調(diào)用Invoke Node設(shè)Save Instrumentt的Path to saved file為需要設(shè)置默認(rèn)值的VI路徑 10、 使用串口過程中發(fā)生錯(cuò)誤: 如下錯(cuò)誤:1) Unable to open session to “ASRL1::INSTR”2) Return Value :0XBFFF00723) Status Name :VI_ERROR_RSRC_BUSY4) The resource is valid, but VISA can not currently access it.A:這是由于訪問COM口的軟件引起的,有可能是運(yùn)行LV程序打開了VISA的對話而沒有關(guān)閉它;或者打開了一個(gè)永遠(yuǎn)不能關(guān)閉的超級(jí)終端連接。或者是其他的軟件正在使用該串口或者串口掛起了,這是需要關(guān)閉所有的程序。若果還是沒有解決,最后方法:禁止COM口以釋放資源;步驟如下:打開控制面板,點(diǎn)擊系統(tǒng)圖標(biāo),選擇設(shè)備管理器,展開端口,選中要操作的串口,右擊選擇屬性,在常規(guī)選項(xiàng)里選擇不再使用該設(shè)備?;蛘咧苯佑覔暨x擇停用。設(shè)定完畢重新啟動(dòng),然后選擇再啟用該串口。
11、在使用Open/Create/Replace File.vi選擇create or replace 方式時(shí),如果文件已經(jīng)存在,需要Replace,怎樣才能不彈出對話框直接Replace?A:兩種方式:1)雙擊打開Open/Create/Replace File.vi的程序框圖,把里面的If function is 2(create or replace with protection) ask user’s permission to 的CASE結(jié)構(gòu)刪除。2)在Open/Creat/Replace File.vi前加一個(gè)判斷文件存在的結(jié)構(gòu),判斷存在時(shí)運(yùn)行Delete.vi
12、LV在做網(wǎng)絡(luò)發(fā)布的時(shí)候,能否在由LabVIEWWEBServe生成的HTML中嵌入其他語言寫的腳本文件?或者在其他網(wǎng)絡(luò)服務(wù)器上使用由LV生成的HTMLA:這兩種情況都是不允許的,原因在于NI的Web Server不允許這樣的操作。LV的Web Server無法將非LV環(huán)境下生成的腳本信息傳送到客戶端瀏覽器,也無法訪問客戶端瀏覽器中非LV環(huán)境下生成的腳本信息;同樣是處于NI Web Server的問題,其他的Web Server(Apache,IIS等)也無法使用由LV的Web Server生成的HTML文件實(shí)行對VI控制。
13、 如何較精確的判斷延時(shí)時(shí)間?A:需要使用迅捷VI(Elapsed Time.vi)而不能使用Wait。因?yàn)閃ait是會(huì)受到系統(tǒng)運(yùn)行的影響,而且重復(fù)延時(shí)后會(huì)產(chǎn)生積累誤差。而Elapsed Time使用的系統(tǒng)時(shí)間(精確到Ms),不會(huì)產(chǎn)生累積誤差。
14、 如何動(dòng)態(tài)添加Tree控件內(nèi)條目?A:查找Directory hierarchy in tree control.vi例程,打開init-open-close子vi內(nèi)的Directory to tree子vi內(nèi)add Item.vi。使用該屬性節(jié)點(diǎn)進(jìn)行添加刪除操作。重點(diǎn)在于parent tag端口的使用。如果添加的為最上層的條目,則parent tag為空字符串。如果是子層條目,則parent必須為上一層條目的tag。
15、 在LV7.1中如何使用Database Connectivity更新ACCESS數(shù)據(jù)庫中數(shù)據(jù)類型為OLE的字段? A:使用帶參數(shù)更新數(shù)據(jù)庫的方式更新OLE數(shù)據(jù)類型的數(shù)據(jù)。具體方法如下:1)使用DB Tools Open Connection.vi打開數(shù)據(jù)庫;2)使用DB Tools Create Parameterized Query.vi建立一個(gè)帶參數(shù)更新數(shù)據(jù)庫的Refnum,在SQL query輸入“update表名稱set列名稱=(?)”,由于OLE數(shù)據(jù)無法用文本方式直接體現(xiàn),“(?)”在這里就代表OLE的數(shù)據(jù)類型;3)使用DB Tools set Parameter.vi,在Value處輸入OLE數(shù)據(jù)就可以,比如數(shù)組;4)使用兩次DB Tools Free Object.vi釋放Refnum,才可以得到Connection Reference,才可以再使用其他DB Tools VI;5)斷開連接。
16、 LV7.1,Time Loop結(jié)構(gòu)主程序內(nèi)調(diào)用了兩個(gè)不同功能的子程序,當(dāng)子程序被調(diào)用時(shí)彈出子VI前面板。子程序內(nèi)均使用了Time Loop,設(shè)置均一樣,但是調(diào)用任一子VI后另一個(gè)再也調(diào)用不了了。 A:兩個(gè)子VI均使用了同一個(gè)設(shè)置的Time Loop結(jié)構(gòu),這是由于兩個(gè)子VI的Time Loop的Loop name名稱相同造成的。
17、 在LV7.1中如何設(shè)定和顯示Cursor A:舉例對于waveform graph,我們可以調(diào)出它的屬性節(jié)點(diǎn),然后在屬性節(jié)點(diǎn)中選擇Cursor list,程序就會(huì)以簇?cái)?shù)組的形式列出所有的游標(biāo),先索引出來某個(gè)游標(biāo),然后再利用簇函數(shù)就可以修改了,如果要改變游標(biāo)的坐標(biāo),可以Index Array 索引出某個(gè)游標(biāo),然后Bundle by name就可以修改,再replace array或者其他數(shù)組函數(shù),將改變后的簇?cái)?shù)組寫入另一個(gè)cursor list的屬性節(jié)點(diǎn)即可。
評論