LabVIEW生成.NET的DLL——C#下调用NI数据采集设备功能的一种方法 [原创www.cnblogs.com/helesheng]
Python微信訂餐小程序課程視頻
https://edu.csdn.net/course/detail/36074
Python實戰量化交易理財系統
https://edu.csdn.net/course/detail/35475
LabVIEW是NI公司的數據采集設備的標準平臺,在其上調用NI-DAQmx驅動和接口函數能夠高效的開發數據采集和控制程序。但作為一種圖形化的開發語言,使用LabVIEW開發涉及算法和流程控制的大型應用程序還是顯得力不從心。因此在C#和VB等.net開發工具中實現NI-DAQmx驅動的靈活調用,對于數據采集設備的廣泛應用意義重大,常見的方法有:
1、使用NI公司為Visual Studio提供的集成式開發套件Measurement Studio,它帶有的ActiveX和.NET控件,以及面向對象的數據采集硬件接口。但由于Measurement Studio屬于付費軟件,成本較高,且進一步造成Measurement Studio的開發資源不多見,開發難度較大。
2、LabVIEW具有創建.NET的DLL的功能,可以把LabVIEW下開發的數據采集卡驅動軟件打包成可供Visual Studio .NET方便調用的動態鏈接庫,大大降低數據采集軟件開發的難度和成本。
在使用這一功能的同時,我還意外的發現在LabVIEW環境下使用MathScript RT節點,通過Matlab的M語言開發的算法也能夠封裝在DLL中,為.NET下的算法開發提供一種“捷徑”。以下內容歡迎轉載,但請注明出處: https://blog.csdn.net/helesheng
一、在LabVIEW中開發DLL
打開LabVIEW,創建一個項目。
在彈出的項目瀏覽器窗口中重命名項目名稱為“測試DLL項目”,右鍵單擊項目瀏覽器中的“我的電腦”順序選擇“新建”->“VI”,創建一個名為“單次采集有限樣本數.vi”的VI。
在該VI的程序框圖界面輸入以下數據采集卡采集數據的程序。實現用10KSPS的速度,從DEV1設備的通道0(ai0)連續采集指定點數的數據,并將之顯示在波形圖控件上。其中采集數據點數通過數值輸入控件“samples per channel”在前面板輸入得到。為方便實現DLL輸出接口,下圖的程序框圖還將采樣結果輸出到了名為data的顯示控件數組中。
右鍵單擊前面板窗口中單擊右上角的連線端子圖標,在彈出菜單中選擇“模式”,以及一個輸入端子和一個輸出端子的模式(輸入和輸出端子的數量可以根據需要DLL封裝的函數的需要確定)。
在工具選板中選擇“連線”工具將連線端子圖標左側的輸入端子連接到前面板上的數值輸入控件“samples per channel”,圖標右側的輸出端子連接到前面板上的數字顯示控件“data”。連線端子的顏色將隨所連接控件的數據類型發生改變。
在項目瀏覽器中右鍵單擊“程序生成規范”選擇新建->.NET互操作程序集。
在彈出的互操作程序集屬性頁面中選擇左側類別中的“信息”,填寫DLL相關信息,這些命名將在C#調用DLL時用到。
在左側類別中選擇 “源文件”,并在項目文件中選擇需要封裝為DLL的VI,單擊下圖中向右的藍色箭頭,將其搬移到右側的“導出”窗口中。
在隨即彈出的定義VI原型窗如下圖所示。
將采集結果data作為returnvalue返回,同時刪去左側參數框中的data,配置后定義VI原型窗口變為下圖所示的樣子。
在“預覽”窗口單擊生成預覽可以預覽將要生成的DLL文件,檢查路徑配置正確后,單擊下方的生成按鈕,即可在指定目錄生成可供調用的DLL庫。
**二、**在C#中調用LabVIEW生成的DLL
在VS的C#開發環境中新建一個工程。右鍵單擊“解決方案資源管理器”中的“引用”條目,選擇“添加引用”。
添加之前在LabVIEW中創建的DLL文件。
在“解決方案資源管理器”中雙擊DLL,可以查看該DLL中的方法。
在窗體代碼中添加之前在LabVIEW中指定的命名空間。
之后就可以在C#代碼中調用DLL中的數據采集設備控制函數了。
下圖是我用USB-6009采集的LED燈泡工作時的電流。其中使用了Measurement Studio中的波形顯示控件WaveformGraph控件(實際使用時,不一定要安裝Measurement Studio)。
三、在LabVIEW中封裝帶有Matlab腳本的DLL
突發奇想,LabVIEW的MathScript RT節點可以包括Matlab的M腳本算法,那是否可以通過LabVIEW將Matlab開發的算法打包到可供C#調用的DLL中呢?試了一下,還真可以!
如下圖所示,在LabVIEW程序框圖中插入一個MathScript RT節點,對采集到的信號計算快速傅里葉變換FFT,結果同樣作為VI的輸出。
更新LabVIEW項目瀏覽器中的互操作程序集和C#中的引用,不修改之前的代碼,就看到了上面電流信號的FFT幅頻特性圖。
總結
以上是生活随笔為你收集整理的LabVIEW生成.NET的DLL——C#下调用NI数据采集设备功能的一种方法 [原创www.cnblogs.com/helesheng]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 30岁学android开发
- 下一篇: Codeforces Round #73