轉載:http://www.javashuo.com/article/p-dhzpwrqj-mz.html數組
1 CustomDevice開發框架
CD的開發必須遵守NI提供的模板進行。安裝完Veristand以後,會在LabVIEW 安裝目錄下的vi.lib文件下生成【NI Veristand】目錄,例如我安裝的LabVIEW2015在D盤下,須要的工具就在D:\Program Files(x86)\National Instruments\LabVIEW 2015\vi.lib\NI Veristand\Custom DeviceTools\Custom Device Template Tool\ Custom Device Template Tool.vi。打開這個VI,使用它生成一個工程。工具
1.1 工程生成工具:Custom Device Template Tool.vioop
圖12 CD工程生成工具VI.net
新建一個工程,設置名稱爲【485 comm】,設置工程存儲路徑後,設置參數Execution Mode,是別的,這個尚未鬧明白是什麼意思。保持默認。3d
1.2 Custom Device Types調試
1.2.1 AsynchronousCustom Devicesxml
已參見幫助文檔,待補充。blog
1.2.2 簡歷工程隊列
運行後看效果。
圖13 CD工程
居然是個LabVIEW的工程。工程名後面自動追加「Custom Device Project」,同時生成兩個lvlib庫和一個xml文件,庫中的VI名稱自動命名,不能修改。
最重要的四個文件以下:
圖14 四個VI
Initialization VI.vi 實現的功能是當 Veristand 中建立該 Custom Device 時,爲Custom Device 建立相對應的屬性和輸入/輸出通道; Main Page.vi 實現的功能是在Veristand 中顯示 Custom Device 相對應的通道和屬性信息; RTDriver.vi 實現的是當Veristand 將 Custom Device 部署到 Real-Time 系統以後, Custom Device Loop 中 Custom Device如何執行本身的工做。所以能夠看出,前二者(Initialization和main page)運行的環境是上位機(Windows開發程序平臺),能夠加入「彈出對話框」等調試方式,後者的主要操做環境是 Real-Time,若是要輸出調試信息,就要
採用前面提到的 Print NI VeriStand Debug String。
1.3 Initialization VI
默認的框架是這樣的。
圖15 Initialization框架
這個框架的主要功能就是定義你的設備的輸入、輸出和一些屬性。整個VI的輸入輸出是固定的了。最經常使用三個VI:
:建立設備的輸入和輸出通道功能類型,並指定其屬性和page,其中輸入和輸出的數據都是浮點數。這裏定義的輸入和輸出是指的板卡或者設備自己的,相對於Veristand這個要調用他的平臺,設備的輸出是要給到平臺的輸入。
:具體指定輸入和輸出的通道名稱、單位、默認值等信息。
圖16 設定輸入、輸出通道
:設置自定義設備的屬性和屬性的值類型,默承認選擇。
屬性和輸入/輸出的區別在於:屬性在配置好以後, Veristand 在 Custom Device Loop 中只會頗有限次數的訪問該信息,而輸入/輸出在 Custom Device Loop 的每一次循環中都會被使用到;屬性的數據類型包含的種類不少,好比布爾,數值,字符串,數組、變體(簇轉換)等;輸入/輸出的數據類型在Veristand 中被限定爲Double,不能更改。
根據以上信息,設定個人串口通訊設備通道和屬性以下:
圖17 通道設置
建立了一個輸入,兩個輸出,三個屬性,可是這些是如何和板卡、Veristand聯繫起來的呢?
先擱置不說,等作完一個CD以後,導入到Veristand中再看。
1.4 Main page
Main page的做用是將Initlizantion中設置的屬性應用起來,在Veristand中的界面展現。
圖18 main page初始化前面板
在這裏放置屬性配置所須要的控件。當前CD中,屬性有三個:串口配置參數和兩個端口號。
圖19 放置控件
在程序面板中,經過控件值變化的事件結構,將控件值賦給以前設置好的屬性。程序中屬性名稱要和以前得一致。
:給屬性賦值。具體實如今事件結構中,以下圖所示。
圖20 串口設置賦值
圖21 Port1賦值
圖22 Port2賦值
1.5 RT Driver
這個就是和板卡相關的了。設置的屬性和輸入輸出通道,怎麼做用於板卡,如何將數據上傳到Veristand,就在這裏實現。
首先,先看下整個大過程的數據流是如何執行的。初始化給了兩個隊列引用進來。
圖23 輸入、輸出隊列引用
1.5.1 DeviceOutputs FIFO
設備採集到的值給系統傳送隊列,對應的板卡採集/讀取等操做,將獲取到的數據以數組的形式經過這個隊列發送到系統中。
圖24 板卡的採集區域
同理,Input隊列就是從系統中獲取到要操做的值,寫入板卡中。
圖25 板卡寫操做區
在此以前,板卡須要初始化、打開等操做。板卡的配置參數就從屬性節點中獲取到。
圖26 獲取屬性值後配置串口並打開
圖27 板卡寫操做
圖28 板卡度操做
讀寫部分完成以後,在最後面退出本VI時關閉資源。
圖29 關閉板卡
以上,就完成了板卡的操做,並將數據經過隊列與系統進行交互。
1.6 發佈CD
圖30 程序生成規範
在工程中,自動生成一個程序生成規範,最後生成的路徑要選擇在C:\Users\Public\Documents\NationalInstruments\NI VeriStand 2015\Custom Devices下才能被Veristand識別。
生成規範裏面,目標目錄不要修改,不然在加載以後會出現錯誤。
圖31 生成路徑
源程序和目標程序都使用默認的設置便可。
圖32 CD發佈
1.7 在Veristand中的應用
新建Veristand工程「485CD Test」,進行系統配置,
圖33 在Veristand中導入
導入以後,自動加載配置的屬性和通道。
圖34 通道和屬性節點
由上圖能夠看出,在Initialization VI中設置的通道名、屬性名稱和默認值都在這裏顯示,兩個功能塊,一個輸入兩個輸出通道,屬性面板上就是main page VI 的控件。--------------------- 做者:NUC-94210 來源:CSDN 原文:https://blog.csdn.net/mfcjishiben/article/details/79417739 版權聲明:本文爲博主原創文章,轉載請附上博文連接!