C+環境下調用銳視開源測控軟體
前言
C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數據類型為特點的基於對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。因此C++也可以稱之為面向對象的程序設計。
C++編寫的程序為非託管代碼,C#編寫的程序為託管代碼。而CLR(Common Language Runtime)卻提供了一些機制,允許C++和C#之間互相調用。
簡儀科技提出的銳視開源測控軟體,也是基於C#來開發的,因此在C++中完全可以直接調用。
C++調用銳視驅動軟體
下面以簡儀科技USB61902為例,介紹如何在C++環境下調用銳視驅動。
1) 打開VS2015新建項目(其他語言-Visual C++)選擇Win32控制台應用程序,設置工程名JYUSB61902Demo,如下圖:
2) 單擊確定,出現對話框後出現下一步,如下圖:
3) 單擊下一步,出現對話框,選擇完成。如下圖:
4) 新建工程完成後,出現源代碼編輯界面,如下圖:
5) 修改工程屬性,在(配置屬性-常規-公共語言運行時支持)中選擇「公共語言運行時支持(/clr)」選項,如下圖:
6) 在源代碼中使用#using語句引用JYUSB61902.dll
7) 在源代碼中使用using引用命名控制項
8) 在源代碼中調用JYUSB61902AITask編程,源代碼如下圖:
9) 編譯成功,運行。
10)運行時彈出錯誤,如下圖:
11) 需要將JYUSB61902.dll複製到C++工程的可執行程序目錄下。再次運行成功。
總結C++ 和C# 語法區別:
通過上圖編寫的C++代碼可以看出,在C++中調用C#庫文件時,有一些語法上的區別需要注意:
不能通過#include來引用庫文件,而是通過#using「文件目錄庫文件.dll」來引用;
通過 「using namespace 命名空間」來導入命名空間。
對象需要使用gcnew方法創建,創建後的對象需要使用」^」修飾,例如JYUSB61902AITask ^aiTask = gcnew JYUSB61902AITask(0);
對象中的屬性、方法需要通過符號「->」來索引,而不是通過符號「.」,如aitask->SampleRate;
命名空間中的枚舉需要通過符號「::」來索引,如JYUSB61902::AIMode::Finite;
數組的創建需要使用gcnew的方式創建,不能使用C++的數組類型。例如:一維array ^data = gcnew array(1000) {}; 二維array^ data = gcnew array(1000,2){};
在C#中用out和ref欄位修飾的入參可以直接聲明變數使用,這些變數在執行後的值會被反寫。


TAG:簡儀科技 |