張靈靈
(安徽省廣播電視臺淮北市發射臺,安徽 淮北 235000)
LabVIEW(Laboratory Virtual instrument Engineering Workbench)是一種圖形化的編程語言的開發環境,它廣泛地被工業界、學術界和研究實驗室所接受,視為一個標準的數據采集和儀器控制軟件,同時它也是目前多數虛擬儀器系統所采用的開發軟件。在這種基于圖形化編程語言的開發環境中,LabVIEW可以高效、快速地編寫出相應的應用程序,完成諸如數據采集、數據處理、數據顯示以及儀器控制和通信等多種功能。在我國由于引進時間短,了解和熟悉它的人不多,還遠遠沒被認識和推廣應用。
VISA(Virtual Instrument Software Architecture)是一個用來與各種儀器總線進行通訊的高級應用編程接口(API)。它不受平臺、總線和環境的限制。因此,可以通過NI-VISA來控制USB設備進行相互之間的通信。
首先,配置NI-VISA來控制USB設備。安裝好VISA,接著分3步完成操作:
(1)使用Driver Development Wizard(驅動程序開發向導)創建INF文檔。為了使用NI-VISA,先讓Windows將NI-VISA作為設備的缺省驅動程序使用。在Windows環境中可以通過INF文檔做到這一點。NI-VISA3.0中包含的VISA Driver Development Wizard(DDW)將為USB設備創建一個INF文檔。
選擇Start>>Programs>>National Instruments>>VISA>>VISA Driver DeveloperWizard,打開DDW。
可以用這個向導為PXI/PCI或USB設備創建一個INF文檔。由于是在為USB設備創建驅動程序,因此選擇USB,并點擊Next。此時出現圖1所示的VISA DDW基本設備信息窗口。

圖1 VISA DDW基本設備信息窗口
進行這一步時,您需要清楚USB儀器的USB供應商ID和產品ID。這些數字可以在您安裝USB設備的時候對其進行確認,并在您想要與設備通訊的時候,尋找它的地址。依據USB的規格,兩個數字都是16位十六進制數字,并應該由設備制造商提供。在相應欄內輸入設備的供應商ID、產品ID、制造商名稱和型號名稱。
USB Instrument Prefix(USB儀器前綴)只是一個描述符,您可以用它來識別本設備所用的相關文檔。在USB Instrument Prefix中輸入相應信息,并在“output file directory”中選擇存放這些文檔的目錄,然后點擊Finish。INF文檔就被建好并保存在您指定的位置了。
(2)安裝INF文檔,并使用INF文檔的USB設備。在Windows XP操作系統中,DDW創建INF文檔時,INF文檔頂部的標題中會包含安裝指導。因為INF文檔是ASCII文本文件,所以可以通過諸如記事本之類的任何文本編輯器進行閱讀。如果要了解有關安裝INF文檔的詳細信息,就在文本編輯器中打開您的INF文檔,然后遵照文檔頂部的指導行事。
(3)使用NI-VISA Interactive Control(NI-VISA互動控制工具)對設備進行測試。
VISA Interactive Control(VISAIC)是一個實用程序,可用來輕而易舉地與任何VISA資源進行通訊。做好使用VISA的配置之后,USB設備就會被列入USB分項之中。雙擊該設備,打開設備的VISA對話框。應出現如圖2所示的窗口。

圖2 “VISA交互控制”打開VISA對話框
使用VISAIC打開VISA Session時,會自動選擇“Template(模板)”表格與“Property Node(Read)”(屬性節點(只讀))表格。選擇想要讀取的屬性并點擊Execute,以讀取此項屬性。“Current Value”(當前值)指示欄中即顯示“Attribute Name”(屬性名稱)中指定屬性的當前值。上圖中,可以看到Resource Name(資源名稱)的屬性。
在NI-VISA與USB設備進行通訊后。現在,在LabVIEW中,我們可以使用“VISA打開”、“VISA關閉”、“VISA讀取”和“VISA寫入”進行數據的傳輸了。

圖3 LabVIEW通信界面
設備連接成功以后,下一步可以用LabVIEW來設計這里的應用程序。
Labview通信主界面如圖3所示。
在上述圖中,首先從VISA resource name中選擇一個端口號(這個端口與外部儀器連接到電腦上的端口是相一致的),接著對流控制,奇偶校驗位,數據的傳送速率,數據位,停止位等這些參數進行相關的設置。此時,LabVIEW與外部儀器的連接已經完成,下面就要進行數據的發送了。在Lab-VIEW通信中,先在發送字符框中寫入一個字符,如果這個字符是外部儀器默認的字符,這時再點擊發送按鈕,外部儀器中的數據將傳送到LabVIEW中(如果這個字符與外部儀器默認的字符不符,外部儀器中的數據將不會傳送過來),再點擊接收按鈕,此時數據將在圖中的示波器上顯示出來。與此同時,讀取字節數框內也顯示了讀取的總字節數。從而實現了LabVIEW與外部儀器之間的相互通信。如果想保存傳送到的數據,單擊保存按鈕就可以了。所有的功能實現完以后,再單擊退出按鈕便可以退出了。
當單擊保存按鈕時,傳送到LabVIEW里的數據默認以文本文檔的形式保存到磁盤里,當然也可以選擇別的格式保存,而保存的路徑則可以自主選擇。
軟件具體實現的步驟是:
(1)調用VISA Configure Serial Port完成串口參數的設置,包括串口資源分配、波特率、數據位、停止位、校驗位和流控等。
(2)使用VISA Write發送數據,使用VISARead接收數據.在接收數據之前需要使用VISAByt es at Serial Port查詢當前串口接收緩沖區中的數據字節數,如果VISA Read要讀取的字節數大于緩沖區中的數據字節數,VISA Read操作將一直等待,直至Timeout或者緩沖區中的數據字節數達到要求的字節數.當然也可以分批讀取接收緩沖區的數據或者只從中讀取一定字節的數據。
(3)串口使用結束后,用VISA Close結束與V ISA resource name指定的串口之間的會話。
程序設計時,第一步實現LabVIEW與外部儀器間的相互通信。正確安裝NI-VISA驅動程序后,接著進行通信接口程序的完成。具體的程序框圖如圖4所示。

圖4 通信接口程序框圖
與外部儀器通信連接成功以后,下一步就是進行雙方的的發送和接收數據。首先通過LabVIEW向外部儀器發送一個字符,如果該字符與儀器中設置的字符相符合,則儀器便向LabVIEW發送數據過來。而發送過來的數據在LabVIEW前面板框圖中的示波器中顯示出來。
綜上所述,通過通信接口和數據的處理與顯示這兩個程序框圖從而實現了LabVIEW與外部儀器間的相互通信。
從最終測試得到的數據表明,文章設計串口通信的方案是有效,可行的。它成功實現了LabVIEW與外部儀器之間的相互通信。該方法簡單方便,對儀器發送到LabVIEW的數據,可以進行進一步的測量,處理和檢測,操作完成以后再把處理過的數據再發送到外部儀器上。這種通信方式在儀器儀表與虛擬儀器之間的數據交換和檢測等方面,有較高的實用價值。
[1]楊樂平.LabVIEW程序設計與應用[M].北京:電子工業出版社,2001.
[2]徐永和.USB外圍設備設計與應用[M].北京:北京航空航天大學出版社,2002.
[3]龍志強,趙海龍.虛擬儀器測試技術研究[J].儀表技術,2000,(3).
[4]楊樂平,李海濤,肖相生.LabVIEW程序設計與應用》[M].北京:電子工業出版社,2001.
[5]逯穎.基于LabVIEW的串行通信接口設計與實現[J].現代電子技術,2006,29(17):123-124.
[6]賴永泉,王毅,曹銀強.基于DLL虛擬儀器系統開發技術[J].儀器儀表與檢測技術,2004,29(4):62-65.
[7]李文軍,田瑞利,易利鵬.基于LabVIEW的數據采集與信號處理系統[J].現代電子技術,2005,28(20):10-11,17.
[8]曾水生,謝云,易波.Labview實時數據采集系統的USB2.0接口實現[J].機床與液壓,2005,(5):89-91.