LabVIEW 串口通信


  • Instrument I/O

  利用LabVIEW內置的驅動程序庫和具有工業標准的設備驅動軟件,可對 GPIB(通用接口總線)、Ethernet(以太網)接口、RS-232(標准串行接口總線)/RS-485 等 I/O 儀器設備進行控制。在LabVIEW的儀器I/O子模板上提供了多種圖標可對各種I/O儀器設備進行驅動。

  在LabVIEW功能模板的Instrument I/O→Serial中包含進行串行通信操作的多個功能模塊,如下圖所示,分別可實現串口緩存檢測、串口寫、串口讀、中斷、串口設置、關閉串口驅動等功能。

  利用計算機的RS-232串行口,實現雙機通信的硬件連接線路如下圖所示,圖中采用的是最簡單的三線制連接方式。TxD 為發送數據端,RxD 為接收數據端,GND 為接地端。

  • VISA 

  VISA是Virtual Instrument Software Architecture的簡稱,是由組成 VXI plug & play 系統聯盟的 35 家最大的儀器儀表公司所統一制定的 I/O 接口軟件標准及其相關規范的總稱。一般稱這個 I/O 函數庫為 VISA 庫(用於儀器編程的標准 I/O 函數庫)。VISA 函數庫是計算機與儀器之間的標准軟件通信接口,用以實現對儀器的程控。VISA對於測試軟件開發者來說是一個可調用的操作函數集,本身並不提供儀器編程能力,它只是一個高層 API,通過調用低層的驅動程序來控制儀器。NI-VISA 的層次結構如下圖所示:

  VISA是整個儀器行業用於儀器驅動程序的標准 API ,用戶可以用一個 API 控制包括 VXI、GPIB、RS-232 串口、USB(通用串行通信總線)串口等不同類型的儀器(根據所使用的儀器類型調用相應的驅動程序)。使用 VISA 有許多優點,它方便用戶在不同的平台對不同類型的儀器進行開發移植及升級測控系統。

  1. 大多數的VISA功能模塊使用了VISA resource name控制參數,該參數標識了與之通信的設備名稱以及進行I/O操作必須的配置信息。MAX可用於配置VISA資源名稱。

  2. 使VISA資源名稱指定的串口按特定設置初始化。具體信息可參考LabVIEW的幫助文檔

  3. VISA Write 模塊把write buffer中的字符串(命令或數據)寫入VISA Resource Name端參數指定的設備。return count返回實際傳送的字節數。error in 和 error out 字串包含出錯狀況。

  4. VISA Read函數讀取由 VISA Resource Name指定設備中的數據。byte count 指明讀入 read buffer 中的字節數。

  5. VISA Bytes at Serial Port返回指定串口的輸入緩沖區的字節數。

 

  6. 打開與 VISA 資源的會話連接也會占用計算機的系統資源,因此當VISA 程序結束時,必須關閉所有打開的會話通道。LabVIEW 為此提供了VISA Close函數。該函數關閉由 VISA Resource Name 端參數指定的設備的通信過程,釋放 VISA Session占用的計算機系統資源。

  •  一個簡單的串口通信程序

  在定時模塊中找到等待(ms)子模塊,放置在while循環中進行延時。等待指定長度的毫秒數,並返回毫秒計時器的值。計時器的精度由系統確定,依據使用平台的不同,精度有可能低於1毫秒。

  添加布爾類型的確定按鈕和停止按鈕,更改屬性為“保持轉換直到釋放”,即按下去的時候會變true,釋放會變false

  添加4個數值常量:編程(Programming)→數值(Numeric)→ 數值常量(數值常量(Numeric Constant),值分別為9600(波特率:波特率定義為每秒鍾傳送二進制數碼的位數,以位/秒(bit/s)為單位,亦稱“波特”。)、8(數據位)、0(校驗位,無)、10(對應停止位1)。

  添加一個比較函數,將輸入緩沖區的字節數與0比較,只有當串口接收緩沖區的數據個數不等於 時,才將數據讀入到接收區。

  注意在條件結構(case structure)的false條件下也要接好到VISA Close模塊的線,否則會出錯。

  將全部模塊連接好之后,點擊運行按鈕。如果運行程序發現彈出如下錯誤,說明沒有安裝VISA驅動,可以在這里下載合適的VISA驅動程序。

  裝完后可以打開NI MAX,在軟件這個模塊下可以查看目前已經安裝的一些軟件,可以看到NI-VISA已經裝好。NI MAX即NI的配置管理軟件(Measurement & Automation Explorer),主要用來配置管理本機和遠程系統上的各種軟硬件資源。它可以執行系統診斷,添加新的通道、接口和虛擬通道,還可以查看連接在系統上的設備和儀器。 

  再次運行還是彈出了錯誤,如下圖所示。網上查找了相關原因和解決方法,很可能是由於串口被占用導致。按照網上的方法通過刪除注冊表中的一個數值項來清除串口配置:在“運行”對話框中輸入“regedit”進入注冊表;然后進入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter這時我們可以找到該數值項:ComDB,它的值代表目前使用中的串口端號。比如1d,它的二進制:0001 1101,則從右往左數代表第1,3,4,5端口被占用。這樣我們只需要把ComDB這個數據項刪除,關閉注冊表(不用重啟電腦)即可。然后在設備管理器中通過串口“屬性”中的“高級”來重新配置端口的編號。

  將USB轉串口線的RXD和TXD接到一起進行單機測試,如下圖所示,在發送區寫入字符串"hello,world!"之后點擊發送字符按鈕發送,接收區會顯示發送的字符串。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM