Labview問題集錦
46、 如何將EVENTSTRUCT中捕獲的時間傳遞到STATE DIAGRAM?
A:使用VENTSTRUCT捕獲面板事件后,將不同的事件對應(yīng)于不同的字符串和其他,再通過Q
UEUE將VENTSTRUCT中的字符串傳遞到STATEDIAGRAM中,再根據(jù)得到的字符串進行相應(yīng)的處
理。
47、 使用WRITE TO BINARY FILE函數(shù)向二進制文件中寫入一個1D數(shù)組,為什么在READ F
ROM BIANRY FILE讀取時,會多出4個字節(jié)數(shù)據(jù)呢?
A:寫入時加入了頭信息,多出的4個字節(jié)就是頭信息,代表了數(shù)組或字符串的長度。在WR
ITE TO BINARY FILE 中的APPEND ARRAY OR STING SIZE這個輸入端口中設(shè)置,其默認值為
T,代表加入頭信息;如果將其改為F,就不會多出4個字節(jié)了。
48、 卸載Labview7.1時出現(xiàn)錯誤1603,接著出現(xiàn)錯誤1722和1721,程序詢問是否繼續(xù)卸
載操作,怎樣消除該錯誤并正確卸載7.1?
A:該錯誤通常出現(xiàn)在試圖卸載某些共享組件的時候。按照以下步驟可以解決該問題。
1) 注意當(dāng)錯誤發(fā)生時是在卸載哪一部分組件。一般講在卸載LV核心部分或LV RUNTIME
ENGINE的時候容易出現(xiàn)。
2) 當(dāng)出現(xiàn)錯誤代碼1603,彈出對話框提示繼續(xù)卸載操作時候,點擊YES
3) 如果卸載完成之后提示需要重新啟動計算機,點擊NO。
4) 對于卸載過程中產(chǎn)生的錯誤,從CD相應(yīng)的文件夾中手動運行相應(yīng)的組件,路經(jīng)如下:
componentslvcorefulllvco
i點擊修復(fù)按鈕。
5) 修復(fù)之后再次運行這些MSI,選擇卸載按鈕。這樣就可以完全卸載。
49、Labview7.1在編寫大型程序時希望優(yōu)化計算機的內(nèi)存使用,那么需要考慮哪些內(nèi)容?
A:1)、將VI分解為SUBVI,當(dāng)SUBVI不再被執(zhí)行的時候,LV能夠釋放它的內(nèi)存。
要復(fù)制他們顯示的數(shù)據(jù)。
果SUBVI的前面板不被顯示,不要在SUBVI中使用屬性節(jié)點。
。當(dāng)LV改變數(shù)據(jù)類型,輸出需要一個新的緩存。
數(shù)組或者字符串的大小將造成數(shù)據(jù)的多次復(fù)制。造成內(nèi)存增加,并造成內(nèi)存碎片。
50、 在Labview7.1中生成可執(zhí)行文件后運行出現(xiàn)如下錯誤:“Executable version(7.1
.1) doesn’t match resource file(7.1)”怎樣消除錯誤?
A:這種情況是由于LV7.1.1Run-time Engine安裝損壞或者版本不兼容造成的。解決如下:
1) 到控制面板---添加或者刪除程序
2) 選擇National Instruments Software點擊更改
3) 在National Instruments Software對話框選擇LV7.1.1Run-time Engine點擊修復(fù)
附注:安裝了LV Run-time Engine7.1.1后,在MAX的software里一般看不到LV7.1.1Run-t
ime Engine7.1.1,只能在控制面板里看到。
51、 VISA Set I/O Buffer Size
A:可以完成對緩存的設(shè)置,放的位置一定要跟在串口配置VI的后面,MASK的設(shè)置要對,如
果不設(shè)置,默認值為4096Bytes,如果需要用串口讀取的數(shù)據(jù)比這個大,就會造成數(shù)據(jù)丟失
。
52、 如何將CVI驅(qū)動程序(fp文件)轉(zhuǎn)換成LV的驅(qū)動程序?
A:Labview自帶這個功能。在TOOLS的Instrumentation 中的Import Instrument from CV
I Fp菜單里。
53、 Labview7.1如何創(chuàng)建控件以自定義圖片方式顯示?
A:在前面板放上要創(chuàng)建的控件類型,選中它后點擊EDIT---CUSOMIZE CONTROL進入編輯面
板,用工具欄的控件變成CUSTOMIZE MODE,EDIT—Import Picture From File選擇要顯示
的圖片,右擊前面板的控件點Import Picture。切回Edit Mode。右擊控件選擇Import Pi
cture然后選擇方式。同樣操作其他圖片。
54、 如何把Labview前面板控件當(dāng)前值通過程序設(shè)為下次打開時的默認值?
A:方法如下
1) 手動操作:對控件點擊鼠標(biāo)右鍵----Data Operations---Make Current Value Defa
ult。
2) 通過文件或注冊表方式先把控件當(dāng)前值存下來,再下次打開時再從文件或注冊表把值
讀回來。
3) 使用VI Server技術(shù)在保存控件當(dāng)前值為默認值,但這種方法只能處于編輯狀態(tài)使用
,在生成exe文件后不能使用。操作如下
(1)
(2)
(3)
值的VI路徑
55、 使用串口過程中發(fā)生如下錯誤:
1) Unable to open session to “ASRL1::INSTR”
2) Return Value :0XBFFF0072
3) Status Name :VI_ERROR_RSRC_BUSY
4) The resource is valid, but VISA can not currently access it.
A:這是由于訪問COM口的軟件引起的,有可能是運行LV程序打開了VISA的對話而沒有關(guān)閉
它;或者打開了一個永遠不能關(guān)閉的超級終端連接?;蛘呤瞧渌能浖谑褂迷摯诨?br />者串口掛起了,這是需要關(guān)閉所有的程序。若果還是沒有解決,最后方法:禁止COM口以釋
放資源;步驟如下:打開控制面板,點擊系統(tǒng)圖標(biāo),選擇設(shè)備管理器,展開端口,選中要
操作的串口,右擊選擇屬性,在常規(guī)選項里選擇不再使用該設(shè)備?;蛘咧苯佑覔暨x擇停用
。設(shè)定完畢重新啟動,然后選擇再啟用該串口。
56、 在使用Open/Create/Replace File.vi選擇create or replace 方式時,如果文件已
經(jīng)存在,需要Replace,怎樣才能不彈出對話框直接Replace?
A:兩種方式:1)雙擊打開Open/Create/Replace File.vi的程序框圖,把里面的If func
tion is 2(create or replace with protection) ask user’s permission to 的CASE結(jié)
構(gòu)刪除。2)在Open/Creat/Replace File.vi前加一個判斷文件存在的結(jié)構(gòu),判斷存在時運
行Delete.vi
57、 LV在做網(wǎng)絡(luò)發(fā)布的時候,能否在由LabVIEWWEBServe生成的HTML中嵌入其他語言寫的
腳本文件?或者在其他網(wǎng)絡(luò)服務(wù)器上使用由LV生成的HTML?
A:這兩種情況都是不允許的,原因在于NI的Web Server不允許這樣的操作。LV的Web Ser
ver無法將非LV環(huán)境下生成的腳本信息傳送到客戶端瀏覽器,也無法訪問客戶端瀏覽器中非
LV環(huán)境下生成的腳本信息;同樣是處于NI Web Server的問題,其他的Web Server(Apach
e,IIS等)也無法使用由LV的Web Server生成的HTML文件實行對VI控制。
58、 如何較精確的判斷延時時間?
A:需要使用迅捷VI(Elapsed Time.vi)而不能使用Wait。因為Wait是會受到系統(tǒng)運行的
影響,而且重復(fù)延時后會產(chǎn)生積累誤差。而Elapsed Time使用的系統(tǒng)時間(精確到Ms),
不會產(chǎn)生累積誤差。
59、 如何動態(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é)點進行添加刪除操作。重點在于pa
rent tag端口的使用。如果添加的為最上層的條目,則parent tag為空字符串。如果是子
層條目,則parent必須為上一層條目的tag。
60、 在Labview7.1中如何使用Database Connectivity更新ACCESS數(shù)據(jù)庫中數(shù)據(jù)類型為OL
E的字段?
A:使用帶參數(shù)更新數(shù)據(jù)庫的方式更新OLE數(shù)據(jù)類型的數(shù)據(jù)。具體方法如下:1)使用DB To
ols Open Connection.vi打開數(shù)據(jù)庫;2)使用DB Tools Create Parameterized Query.v
i建立一個帶參數(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)斷開連接。
61、 Labview7.1,Time Loop結(jié)構(gòu)主程序內(nèi)調(diào)用了兩個不同功能的子程序,當(dāng)子程序被調(diào)
用時彈出子VI前面板。子程序內(nèi)均使用了Time Loop,設(shè)置均一樣,但是調(diào)用任一子VI后另
一個再也調(diào)用不了了。
A:兩個子VI均使用了同一個設(shè)置的Time Loop結(jié)構(gòu),這是由于兩個子VI的Time Loop的Loo
p name名稱相同造成的。
62、 在Labview7.1中如何設(shè)定和顯示Cursor
A:舉例對于waveform graph,我們可以調(diào)出它的屬性節(jié)點,然后在屬性節(jié)點中選擇Curso
r list,程序就會以簇數(shù)組的形式列出所有的游標(biāo),先索引出來某個游標(biāo),然后再利用簇
函數(shù)就可以修改了,如果要改變游標(biāo)的坐標(biāo),可以Index Array 索引出某個游標(biāo),然后Bu
ndle by name就可以修改,再replace array或者其他數(shù)組函數(shù),將改變后的簇數(shù)組寫入另
一個cursor list的屬性節(jié)點即可。
63、利用Build Application生成exe文件,如果原程序用到了current vi’s path,那么
就會出現(xiàn)原先默認能找到的文件現(xiàn)在程序自己找不到了?
A:當(dāng)使用current vi’s path這個函數(shù)時,它會將文件名和該vi所在的路徑返回,如果剛
編寫vi還沒有保存,那么運行它會返回一個無效值,如果已保存了該vi,那么就能返回完
整路徑,例如一個名為:“Application.vi”的vi被保存在C:Program FileApplicati
on這個文件夾下面,current vi’s path函數(shù)返回的路徑就是C:Program FileApplica
tion Application.vi;如果生成exe,并且與Application.vi保存在同一個目錄下,那么
運行的時候會返回C:Program FileApplication App.exeApplication.vi,所以我們
需要多用一個Strip path function才能得到和原來一樣的路徑。
64、 如何自定義窗口標(biāo)題字符,而不是用默認的Vi 名稱?
A:如果只是設(shè)置一個非VI名稱的默認標(biāo)題,可以在VI Property>>Window Appearance中設(shè)
置,去掉Same As VI name前面選中符號,然后在Window title中輸入需要顯示的字符;如
果希望在程序中修改標(biāo)題,可以使用VI Server中屬性FP.Title
65、 Labview中使用NI-VISA軟件控制USB設(shè)備
A:為了使用NI-VISA,在Windows環(huán)境中,可以通過INF文檔做到這一點。NI-VISA3.0包含
VISA Drive Development Wizard(DDW)將為USB設(shè)備創(chuàng)建一個INF文檔。1)、選擇Start
Programs National Instruments VISAVISA Drive Developer Wizard,打開DDW??梢杂?br />這個向?qū)镻XI/PCI或USB設(shè)備創(chuàng)建一個INF文檔,點擊Next。此時出現(xiàn)VISA DDW基本設(shè)備信
息窗口。2)進行這一步時,需要清楚USB供應(yīng)商ID和產(chǎn)品ID。這兩個數(shù)據(jù)都是16位十六進
制數(shù)字,由供應(yīng)商提供。點擊Next。出現(xiàn)輸出文檔屬性窗口。3)USB Instrument Prefix
是一個描述符,用來識別本設(shè)備所用的相關(guān)文檔。在USB Instrument Prefix中輸入相應(yīng)信
息,并在“output file directory”中選擇存放這些文檔的目錄,然后點擊Finish。INF
文檔就創(chuàng)建好并保存在您指定的位置了。假定Windows XP操作系統(tǒng)。
復(fù)制INF文檔并將其放入INF文件夾,這個文件夾的位置通常是:“C:WINDOWSINF”。這個
文件夾可能是隱藏的。
右擊C:WINDOWSINF文件夾中INF文件,然后點擊Install。這個過程為您的文件創(chuàng)建了PNF
文檔?,F(xiàn)在就可以準(zhǔn)備安裝USB設(shè)備了。
連接USB設(shè)備。Windows探測到您的USB設(shè)備后,立即會打開“添加新硬件向?qū)?rdquo;。遵照屏幕
上有關(guān)向?qū)С绦虻闹付ㄐ惺?。如果您?zhǔn)備為該設(shè)備選擇驅(qū)動程序,就請瀏覽INF文件夾,并
選擇您使用DDW創(chuàng)建的INF文檔。就可以在MAX和LV中編成控制了。
66、利用Labview的迅捷VI讀出.lvm的數(shù)據(jù),但是無法正常在waveform graph中正常顯示。
A:讀出的二維數(shù)組是以列為單位存放數(shù)據(jù)的,而waveform graph顯示2D數(shù)組是以每行作為
一條曲線進行輸出的,所以,利用Transpose 2D Array 將行列轉(zhuǎn)制就可以了。Waveform
chart與graph剛好相反,是以每列數(shù)據(jù)作為一條曲線進行輸出的,所以不加轉(zhuǎn)制就可以用
chart代替工人阿婆和也可以正常顯示。
67、 Labview7.1DataSocket協(xié)議傳輸數(shù)據(jù)怎樣保證客戶端完整地從服務(wù)器接收數(shù)據(jù)而不丟
失?
A:數(shù)據(jù)丟失的原因是讀取數(shù)據(jù)的速度比發(fā)布慢使得數(shù)據(jù)被覆蓋,處理方法有兩方面:
1) 提高客戶端運行速度,保證服務(wù)器發(fā)布新數(shù)據(jù)前已經(jīng)讀完。
2)
機的要將Datasocket Open函數(shù)模式參數(shù)選為BufferedRead或BufferedRead/Write,然后通
過屬性節(jié)點設(shè)置緩存大小。同時也可以用屬性節(jié)點作緩存區(qū)診斷。
68、 如何將MAX配置文件保存下來?
A:在MAX里,當(dāng)配置完成后,在菜單欄,選擇FILE---Export,選擇保存位置已經(jīng)類型,點
擊Next,選擇需要保存的文件,接著點擊Export,finish。載入時,選擇Import
69、Developer Suit中State diagram toolkit是做什么用的?
A:狀態(tài)框圖使用一個圖形化狀態(tài)框圖標(biāo)識,定義多個狀態(tài)及其轉(zhuǎn)移邏輯,并包含有自動生
成LV代碼的工具,在對于搭建大程序的構(gòu)架上是很有用的一個工具
70、 LV7.1用局部變量的時候只能將機械動作改成Switch,而不能用Latch,例如用Stop按
鈕停止兩個并行的循環(huán),怎么做?
A:在用Latch方式時,系統(tǒng)讀這個控件一次后自動改為默認值,所以用Latch方式時用局部
變量,在兩次讀出的值即使時間間隔很短也不能保持一致,所以就不能用了。此時,可以
用Switch方式,并在程序開始時初始化按鈕就可以了。
71、在ActiveX容器中播放Flash的動畫,如何實現(xiàn)在LV中響應(yīng)Flash中的按鈕動作?
A:通過調(diào)用ActiveX,可以在LV中播放*.swf的動畫。響應(yīng)FLAH中控鍵動作的辦法是用一個
事件結(jié)構(gòu),在ActiveX容器中特定區(qū)域響應(yīng)鼠標(biāo)動作。
72、在調(diào)試LV7.1程序的時候,程序總是進行到無法響應(yīng)得狀態(tài),然后只能強行關(guān)閉,因此
無法正常運行?
A:在VI前面板有個長度很大的字符串Indicator,因此程序在刷新屏幕的時候很消耗資源
,將這個Indicator設(shè)為隱藏,問題就解決了。同樣的問題也會出現(xiàn)在數(shù)據(jù)量很大的Graph
,Chart,甚至探針上。
73、Labview7.1中一個while循環(huán)嵌套另一個While循環(huán),如何通過一個布爾量停止這兩個
循環(huán)?
A:創(chuàng)建一個布爾量的局部變量,用這個局部變量控制一個循環(huán),用布爾量控制另一個循環(huán)
,注意機械特性是不能帶鎖存的(Latch)。
74、采集3路信號,需要根據(jù)一列的數(shù)據(jù)的值來對整個數(shù)組進行排序,保證每一排的數(shù)據(jù)仍
然對應(yīng)。
A:未解決
75、 每次運行時CPU使用率都達到100%,為什么?
A:循環(huán)里面沒加延時就會有這種現(xiàn)象發(fā)生
76、儀器驅(qū)動器的概念和VISA的特點?
A:儀器驅(qū)動器是指使用標(biāo)準(zhǔn)化的I/0函數(shù)儀器設(shè)備進行通信的程序,主要用于對儀器進行
程控操作。在LV編程語言中,儀器驅(qū)動器是指由VISA標(biāo)準(zhǔn)和儀器程控指令共同構(gòu)成的儀器
控制程序的應(yīng)用接口(API)。儀器驅(qū)動器采用VISA標(biāo)準(zhǔn)編程,從而可避開許多復(fù)雜而低級
的儀器程控命令。VISA是虛擬儀器體系結(jié)構(gòu)的簡稱,它的特點有1)面向?qū)ο缶幊蹋?)VI
SA是當(dāng)前所有儀器接口類型功能函數(shù)的超集,且十分簡潔。3)VISA作為標(biāo)準(zhǔn)函數(shù),與儀器
的I/O接口類型無關(guān);4)VISA程序與操作系統(tǒng)與編程語言無關(guān)。
77、如何選擇告訴CAN卡和低速CAN卡的使用?
A:高速CAN 和低速CAN設(shè)備是不能允許于同一個CAN網(wǎng)絡(luò)中。如果CAN設(shè)備是Serials 2 的
CAN設(shè)備那么是有兩個PORT分別可以做高速CAN和低速CAN的,而且是通過軟件來設(shè)置的,直
接在MAX里找對應(yīng)的CAN設(shè)備選擇相應(yīng)的PORT的屬性就可以更改是高速還是低速CAN。如果S
erials1的就需要一個端子,從一個CANport分出兩個Port分別作高速CAN和低速CAN,也是
在MAX設(shè)置的。
78、如何使用Read Text File函數(shù)從文本文件中逐行讀取數(shù)據(jù)?
A:在Read Text File函數(shù)的輸入輸出端口無法設(shè)置讀取行的功能。只有用鼠標(biāo)右擊該函數(shù)
,從彈出的快捷菜單中選擇Read Lines才能實現(xiàn)讀取行的操作。將這個函數(shù)放到一個循環(huán)
里,就可以實現(xiàn)逐行讀取的目的了。
79、用Labview寫的串口程序,生成EXE文件后不能在沒有Lv的機器上運行,這臺機器已經(jīng)
裝好了相應(yīng)的LAB VIEW Run-Time,為什么?
A:如果串口程序使用VISA寫的,就需要在目標(biāo)及其上安裝相應(yīng)的VISA驅(qū)動??梢栽谀繕?biāo)及
其上單獨安裝VISA驅(qū)動,也可在Labview中使用打包功能將VISA驅(qū)動和應(yīng)用程序一起做成一
個安裝文件,統(tǒng)一安裝到目標(biāo)機器上。
評論