LabVIEW初學者常見問題以及解答(下)

本文轉自VI之家論壇 [url]http://www.vihome.com.cn/bbs[/url]
 
1、  如何用LV與可編程儀器通信,該儀器沒有GPIB接口,但有COM口,能否用LV操作?A:可以通過LV的串口通信來解決儀器控制問題,參看FIND EXAMPLE的BASIC 2 PORT SERIAL WRITE AND READ.VI

2、  如何將EVENTSTRUCT中捕獲的時間傳遞到STATE DIAGRAM?A:使用VENTSTRUCT捕獲面板事件後,將不同的事件對應於不同的字符串和其他,再通過QUEUE將VENTSTRUCT中的字符串傳遞到STATEDIAGRAM中,再根據得到的字符串進行相應的處理。

3、  使用WRITE TO BINARY FILE函數向二進制文件中寫入一個1D數組,爲什麼在READ FROM BIANRY FILE讀取時,會多出4個字節數據呢?A:寫入時加入了頭信息,多出的4個字節就是頭信息,代表了數組或字符串的長度。在WRITE TO BINARY FILE 中的APPEND ARRAY OR STING SIZE這個輸入端口中設置,其默認值爲T,代表加入頭信息;如果將其改爲F,就不會多出4個字節了。

4、  卸載7.1時出現錯誤1603,接着出現錯誤1722和1721,程序詢問是否繼續卸載操作,怎樣消除該錯誤並正確卸載7.1?A:該錯誤通常出現在試圖卸載某些共享組件的時候。按照以下步驟可以解決該問題。1)  注意當錯誤發生時是在卸載哪一部分組件。一般講在卸載LV核心部分或LV RUNTIME ENGINE的時候容易出現。2)  當出現錯誤代碼1603,彈出對話框提示繼續卸載操作時候,點擊YES3)  如果卸載完成之後提示需要重新啓動計算機,點擊NO。4)  對於卸載過程中產生的錯誤,從CD相應的文件夾中手動運行相應的組件,路經如下:\components\lvcorefull\lvcorefull.msi或components\lvruntimeeng\lvruntimeeng.msi點擊修復按鈕。5)  修復之後再次運行這些MSI,選擇卸載按鈕。這樣就可以完全卸載。

5、7.1在編寫大型程序時希望優化計算機的內存使用,那麼需要考慮哪些內容?A:1)、將VI分解爲SUBVI,當SUBVI不再被執行的時候,LV能夠釋放它的內存。   2)、儘可能少使用全局變量或局部變量,這兩者會造成LV爲數據備份。   3)、在需要時纔在打開的前面板上顯示大型數組和字符串,因爲前面板的顯示控件需要複製他們顯示的數據。   4)、屬性節點會造成SUBVI的前面板滯留在內存中,這樣會增加內存的使用。因此,如果SUBVI的前面板不被顯示,不要在SUBVI中使用屬性節點。    5)、儘量在數組中使用相同的數據類型,並在傳輸數據進入子VI使用強制小數點位置。當LV改變數據類型,輸出需要一個新的緩存。   6)、當設計流程圖,要注意任何輸入大小與輸出的大小不同的地方。EG:頻繁的增加數組或者字符串的大小將造成數據的多次複製。造成內存增加,並造成內存碎片。

6、  在LV7.1中生成可執行文件後運行出現如下錯誤:“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點擊修復附註:安裝了LV Run-time Engine7.1.1後,在MAX的software裏一般看不到LV7.1.1Run-time Engine7.1.1,只能在控制面板裏看到。

7、  VISA Set I/O Buffer SizeA:可以完成對緩存的設置,放的位置一定要跟在串口配置VI的後面,MASK的設置要對,如果不設置,默認值爲4096Bytes,如果需要用串口讀取的數據比這個大,就會造成數據丟失。

8、  如何將CVI驅動程序(fp文件)轉換成LV的驅動程序?A:LV自帶這個功能。在TOOLS的Instrumentation 中的Import Instrument from CVI Fp菜單裏。

9、  LV7.1如何創建控件以自定義圖片方式顯示?A:在前面板放上要創建的控件類型,選中它後點擊EDIT---CUSOMIZE CONTROL進入編輯面板,用工具欄的控件變成CUSTOMIZE MODE,EDIT—Import Picture From File選擇要顯示的圖片,右擊前面板的控件點Import Picture。切回Edit Mode。右擊控件選擇Import Picture然後選擇方式。同樣操作其他圖片。

10、  如何把LV前面板控件當前值通過程序設爲下次打開時的默認值?A:方法如下1)  手動操作:對控件點擊鼠標右鍵----Data Operations---Make Current Value Default。2)  通過文件或註冊表方式先把控件當前值存下來,再下次打開時再從文件或註冊表把值讀回來。3)  使用VI Server技術在保存控件當前值爲默認值,但這種方法只能處於編輯狀態使用,在生成exe文件後不能使用。操作如下(1)       調用Invoke Node設VI的Edit Mode值爲TRUE(2)       調用Invoke Node設Make Current Value Default(3)       調用Invoke Node設Save Instrumentt的Path to saved file爲需要設置默認值的VI路徑 10、              使用串口過程中發生錯誤:        如下錯誤: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口的軟件引起的,有可能是運行LV程序打開了VISA的對話而沒有關閉它;或者打開了一個永遠不能關閉的超級終端連接。或者是其他的軟件正在使用該串口或者串口掛起了,這是需要關閉所有的程序。若果還是沒有解決,最後方法:禁止COM口以釋放資源;步驟如下:打開控制面板,點擊系統圖標,選擇設備管理器,展開端口,選中要操作的串口,右擊選擇屬性,在常規選項裏選擇不再使用該設備。或者直接右擊選擇停用。設定完畢重新啓動,然後選擇再啓用該串口。

11、在使用Open/Create/Replace File.vi選擇create or replace 方式時,如果文件已經存在,需要Replace,怎樣才能不彈出對話框直接Replace?A:兩種方式:1)雙擊打開Open/Create/Replace File.vi的程序框圖,把裏面的If function is 2(create or replace with protection) ask user’s permission to 的CASE結構刪除。2)在Open/Creat/Replace File.vi前加一個判斷文件存在的結構,判斷存在時運行Delete.vi

12、LV在做網絡發佈的時候,能否在由LabVIEWWEBServe生成的HTML中嵌入其他語言寫的腳本文件?或者在其他網絡服務器上使用由LV生成的HTMLA:這兩種情況都是不允許的,原因在於NI的Web Server不允許這樣的操作。LV的Web Server無法將非LV環境下生成的腳本信息傳送到客戶端瀏覽器,也無法訪問客戶端瀏覽器中非LV環境下生成的腳本信息;同樣是處於NI Web Server的問題,其他的Web Server(Apache,IIS等)也無法使用由LV的Web Server生成的HTML文件實行對VI控制。

13、  如何較精確的判斷延時時間?A:需要使用迅捷VI(Elapsed Time.vi)而不能使用Wait。因爲Wait是會受到系統運行的影響,而且重複延時後會產生積累誤差。而Elapsed Time使用的系統時間(精確到Ms),不會產生累積誤差。

14、 如何動態添加Tree控件內條目?A:查找Directory hierarchy in tree control.vi例程,打開init-open-close子vi內的Directory to tree子vi內add Item.vi。使用該屬性節點進行添加刪除操作。重點在於parent tag端口的使用。如果添加的爲最上層的條目,則parent tag爲空字符串。如果是子層條目,則parent必須爲上一層條目的tag。

15、 在LV7.1中如何使用Database Connectivity更新ACCESS數據庫中數據類型爲OLE的字段? A:使用帶參數更新數據庫的方式更新OLE數據類型的數據。具體方法如下:1)使用DB Tools Open Connection.vi打開數據庫;2)使用DB Tools Create Parameterized Query.vi建立一個帶參數更新數據庫的Refnum,在SQL query輸入“update表名稱set列名稱=(?)”,由於OLE數據無法用文本方式直接體現,“(?)”在這裏就代表OLE的數據類型;3)使用DB Tools set Parameter.vi,在Value處輸入OLE數據就可以,比如數組;4)使用兩次DB Tools Free Object.vi釋放Refnum,纔可以得到Connection Reference,纔可以再使用其他DB Tools VI;5)斷開連接。

16、 LV7.1,Time Loop結構主程序內調用了兩個不同功能的子程序,當子程序被調用時彈出子VI前面板。子程序內均使用了Time Loop,設置均一樣,但是調用任一子VI後另一個再也調用不了了。 A:兩個子VI均使用了同一個設置的Time Loop結構,這是由於兩個子VI的Time Loop的Loop name名稱相同造成的。

17、 在LV7.1中如何設定和顯示Cursor A:舉例對於waveform graph,我們可以調出它的屬性節點,然後在屬性節點中選擇Cursor list,程序就會以簇數組的形式列出所有的遊標,先索引出來某個遊標,然後再利用簇函數就可以修改了,如果要改變遊標的座標,可以Index Array 索引出某個遊標,然後Bundle by name就可以修改,再replace array或者其他數組函數,將改變後的簇數組寫入另一個cursor list的屬性節點即可。

18、利用Build Application生成exe文件,如果原程序用到了current vi’s path,那麼就會出現原先默認能找到的文件現在程序自己找不到了 A:當使用current vi’s path這個函數時,它會將文件名和該vi所在的路徑返回,如果剛編寫vi還沒有保存,那麼運行它會返回一個無效值,如果已保存了該vi,那麼就能返回完整路徑,例如一個名爲:“Application.vi”的vi被保存在C:\Program File\Application這個文件夾下面,current vi’s path函數返回的路徑就是C:\Program File\Application\ Application.vi;如果生成exe,並且與Application.vi保存在同一個目錄下,那麼運行的時候會返回C:\Program File\Application\ App.exe\Application.vi,所以我們需要多用一個Strip path function才能得到和原來一樣的路徑。

19、 如何自定義窗口標題字符,而不是用默認的Vi 名稱? A:如果只是設置一個非VI名稱的默認標題,可以在VI Property>>Window Appearance中設置,去掉Same As VI name前面選中符號,然後在Window title中輸入需要顯示的字符;如果希望在程序中修改標題,可以使用VI Server中屬性FP.Title

20、 LV中使用NI-VISA軟件控制USB設備 A:爲了使用NI-VISA,在Windows環境中,可以通過INF文檔做到這一點。NI-VISA3.0包含VISA Drive Development Wizard(DDW)將爲USB設備創建一個INF文檔。1)、選擇Start Programs National Instruments VISAVISA Drive Developer Wizard,打開DDW。可以用這個嚮導爲PXI/PCI或USB設備創建一個INF文檔,點擊Next。此時出現VISA DDW基本設備信息窗口。2)進行這一步時,需要清楚USB供應商ID和產品ID。這兩個數據都是16位十六進制數字,由供應商提供。點擊Next。出現輸出文檔屬性窗口。3)USB Instrument Prefix是一個描述符,用來識別本設備所用的相關文檔。在USB Instrument Prefix中輸入相應信息,並在“output file directory”中選擇存放這些文檔的目錄,然後點擊Finish。INF文檔就創建好並保存在您指定的位置了。假定Windows XP操作系統。複製INF文檔並將其放入INF文件夾,這個文件夾的位置通常是:“C:WINDOWSINF”。這個文件夾可能是隱藏的。右擊C:WINDOWSINF文件夾中INF文件,然後點擊Install。這個過程爲您的文件創建了PNF文檔。現在就可以準備安裝USB設備了。連接USB設備。Windows探測到您的USB設備後,立即會打開“添加新硬件嚮導”。遵照屏幕上有關嚮導程序的指定行事。如果您準備爲該設備選擇驅動程序,就請瀏覽INF文件夾,並選擇您使用DDW創建的INF文檔。就可以在MAX和LV中編成控制了。

21、利用LV的迅捷VI讀出.lvm的數據,但是無法正常在waveform graph中正常顯示。 A:讀出的二維數組是以列爲單位存放數據的,而waveform graph顯示2D數組是以每行作爲一條曲線進行輸出的,所以,利用Transpose 2D Array 將行列轉制就可以了。Waveform chart與graph剛好相反,是以每列數據作爲一條曲線進行輸出的,所以不加轉制就可以用chart代替工人阿婆和也可以正常顯示。

22、 LV7.1DataSocket協議傳輸數據怎樣保證客戶端完整地從服務器接收數據而不丟失?A:數據丟失的原因是讀取數據的速度比發佈慢使得數據被覆蓋,處理方法有兩方面:1)  提高客戶端運行速度,保證服務器發佈新數據前已經讀完。2)  設立數據緩存區。服務器的在DataSocket Server Manager設置,默認是25M。客戶機的要將Datasocket Open函數模式參數選爲BufferedRead或BufferedRead/Write,然後通過屬性節點設置緩存大小。同時也可以用屬性節點作緩存區診斷。

23、 如何將MAX配置文件保存下來 A:在MAX裏,當配置完成後,在菜單欄,選擇FILE---Export,選擇保存位置已經類型,點擊Next,選擇需要保存的文件,接着點擊Export,finish。載入時,選擇Import

24、Developer Suit中State diagram toolkit是做什麼用的 A:狀態框圖使用一個圖形化狀態框圖標識,定義多個狀態及其轉移邏輯,幷包含有自動生成LV代碼的工具,在對於搭建大程序的構架上是很有用的一個工具

25、 LV7.1用局部變量的時候只能將機械動作改成Switch,而不能用Latch,例如用Stop按鈕停止兩個並行的循環,怎麼做? A:在用Latch方式時,系統讀這個控件一次後自動改爲默認值,所以用Latch方式時用局部變量,在兩次讀出的值即使時間間隔很短也不能保持一致,所以就不能用了。此時,可以用Switch方式,並在程序開始時初始化按鈕就可以了。

26、在ActiveX容器中播放Flash的動畫,如何實現在LV中響應Flash中的按鈕動作? A:通過調用ActiveX,可以在LV中播放*.swf的動畫。響應FLAH中控鍵動作的辦法是用一個事件結構,在ActiveX容器中特定區域響應鼠標動作。

27、在調試LV7.1程序的時候,程序總是進行到無法響應得狀態,然後只能強行關閉,因此無法正常運行? A:在VI前面板有個長度很大的字符串Indicator,因此程序在刷新屏幕的時候很消耗資源,將這個Indicator設爲隱藏,問題就解決了。同樣的問題也會出現在數據量很大的Graph,Chart,甚至探針上。

28、LV7.1中一個while循環嵌套另一個While循環,如何通過一個布爾量停止這兩個循環? A:創建一個布爾量的局部變量,用這個局部變量控制一個循環,用布爾量控制另一個循環,注意機械特性是不能帶鎖存的(Latch)。

29、採集3路信號,需要根據一列的數據的值來對整個數組進行排序,保證每一排的數據仍然對應。A: 30、 每次運行時CPU使用率都達到100%,爲什麼? A:循環裏面沒加延時就會有這種現象發生

31、儀器驅動器的概念和VISA的特點? A:儀器驅動器是指使用標準化的I/0函數儀器設備進行通信的程序,主要用於對儀器進行程控操作。在LV編程語言中,儀器驅動器是指由VISA標準和儀器程控指令共同構成的儀器控制程序的應用接口(API)。儀器驅動器採用VISA標準編程,從而可避開許多複雜而低級的儀器程控命令。VISA是虛擬儀器體系結構的簡稱,它的特點有1)面向對象編程;2)VISA是當前所有儀器接口類型功能函數的超集,且十分簡潔。3)VISA作爲標準函數,與儀器的I/O接口類型無關;4)VISA程序與操作系統與編程語言無關。

32、如何選擇告訴CAN卡和低速CAN卡的使用? A:高速CAN 和低速CAN設備是不能允許於同一個CAN網絡中。如果CAN設備是Serials 2 的CAN設備那麼是有兩個PORT分別可以做高速CAN和低速CAN的,而且是通過軟件來設置的,直接在MAX裏找對應的CAN設備選擇相應的PORT的屬性就可以更改是高速還是低速CAN。如果Serials1的就需要一個端子,從一個CANport分出兩個Port分別作高速CAN和低速CAN,也是在MAX設置的。

33、如何使用Read Text File函數從文本文件中逐行讀取數據? A:在Read Text File函數的輸入輸出端口無法設置讀取行的功能。只有用鼠標右擊該函數,從彈出的快捷菜單中選擇Read Lines才能實現讀取行的操作。將這個函數放到一個循環裏,就可以實現逐行讀取的目的了。

34、用LV寫的串口程序,生成EXE文件後不能在沒有Lv的機器上運行,這臺機器已經裝好了相應的LAB VIEW Run-Time,爲什麼? A:如果串口程序使用VISA寫的,就需要在目標及其上安裝相應的VISA驅動。可以在目標及其上單獨安裝VISA驅動,也可在LV中使用打包功能將VISA驅動和應用程序一起做成一個安裝文件,統一安裝到目標機器上。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章