生活随笔
收集整理的這篇文章主要介紹了
C++ Builder调用辰昶仪器ChNetDriver库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄 需要的程序 配置步驟流程 安裝netframework 安裝光譜儀驅動 庫文件復制 注冊COM組件 編寫C++程序 聯系方式
需要的程序
不低于編寫C#庫的netframework,本例中是netframework4.6.2 光譜儀驅動,正常安裝即可 庫文件,本例中的ChNetDriver.dll,CyUsb.dll 注冊com組件的工具,RegAsm.exe和gacutil.exe
配置步驟流程
安裝netframework
安裝netframework4.6.2文件夾下的ndp46-targetingpack-kb3045566.exe,也可以從微軟官網自行下載,版本號要不低于4.6
安裝光譜儀驅動
根據正常流程安裝光譜儀驅動,右鍵我的電腦,從設備管理器中找到對應的光譜儀名稱,右鍵點擊更新驅動,然后指向光譜儀驅動文件夾的對應平臺版本驅動即可
庫文件復制
將庫文件的文件夾中ChNetDriver.dll和CyUSB.dll復制到VB的工程文件夾下即可
注冊COM組件
將注冊com組件工具文件夾下的gacutil.exe和RegAsm.exe復制到工程文件夾下 以管理員身份運行打開命令提示符 在命令提示符窗口中轉到工程文件夾下(注冊COM組件工具已經復制到該目錄下) 輸入命令regasm ChNetDriver.dll /tlb: ChNetDriver.tlb /codebase 命令提示符窗口提示注冊成功則說明注冊成功,并且會生成一個ChNetDriver.tlb的文件 在命令提示符窗口輸入命令gacutil /i ChNetDriver.dll
編寫C++程序
本例是使用RAD Studio XE4基于C++builder進行開發的VCL Forms Application項目。
調用步驟(常用函數)
主要是介紹常用的函數,其他函數功能可自行查詢手冊了解
實例化一個Wrapper類的變量wrapper,所有函數都通過wrapper調用
#include <ComObj.hpp> Variant wrapper
; CoInitialize ( NULL ) ; wrapper
= CreateOleObject ( "ChNetDriver.Wrapper" ) ;
第二步打開光譜儀設備接口
Variant openSpectrometers
= wrapper
. OleFunction ( "OpenAllSpectrometers" ) ;
以上兩步的順序不可變動,以下順序可以隨意調換。獲取光譜儀的像素點數,參數為光譜儀索引,從0開始
Variant numberOfPixels
= wrapper
. OleFunction
< int > ( "GetNumberOfPixels" , 0 ) ;
獲取光譜儀的序列號,索引為光譜儀的臺數索引
Variant serialNumber
= wrapper
. OleFunction
< int > ( "GetSerialNumber" , 0 ) ;
獲取光譜儀的波長數組,長度為步驟3中獲取的數據
Variant Wave
= wrapper
. OleFunction
< int > ( "GetWavelengths" , 0 ) ; if ( Wave
. IsArray ( ) ) { for ( int i
= 0 ; i
< 2048 ; i
++ ) { ListBox1
- > Items
- > Add ( Wave
. GetElement ( i
) ) ; } }
獲取光譜儀采集的光譜數據,長度為步驟3中獲取的數據
Variant spectrum
= wrapper
. OleFunction
< int > ( "GetSpectrum" , 0 ) ;
設置光譜儀的積分時間,積分時間即為光譜儀的曝光時間,積分時間越長,采集的光譜強度值越大,需要返回的數據的時間越長,積分時間以微秒 為單位,為整數類型(不同型號的光譜儀的最短積分時間不同)
long integrationTime
= Edit4
- > Text
. ToInt ( ) * 1000 ; wrapper
. OleFunction
< int , long > ( "SetIntegrationTime" , 0 , integrationTime
) ;
設置光譜儀的平均次數,光譜儀會采集3次光譜,然后將3次的光譜數據求平均之后返回
long ave
= Edit5
- > Text
. ToInt ( ) ; wrapper
. OleFunction
< int , long > ( "SetScansToAverage" , 0 , ave
) ;
設置平滑平均
long bxr
= Edit6
- > Text
. ToInt ( ) ; wrapper
. OleFunction
< int , long > ( "SetBoxcarWidth" , 0 , bxr
) ;
釋放資源
CoUninitialize ( ) ;
聯系方式
使用過程中有任何問題可以發郵件聯系zmlin@choptics.com
總結
以上是生活随笔 為你收集整理的C++ Builder调用辰昶仪器ChNetDriver库 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。