日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ Builder调用辰昶仪器ChNetDriver库

發布時間:2024/3/24 c/c++ 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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>// wrapper為光譜儀的包裝類 ,所有函數都通過wrapper獲取Variant wrapper;// 初始化CoInitialize(NULL);// 獲取com組件中的wrapper類實例wrapper = CreateOleObject("ChNetDriver.Wrapper");
  • 第二步打開光譜儀設備接口
  • // 打開光譜儀,在獲取wrapper實例之后首先要做這一步Variant openSpectrometers = wrapper.OleFunction("OpenAllSpectrometers");
  • 以上兩步的順序不可變動,以下順序可以隨意調換。獲取光譜儀的像素點數,參數為光譜儀索引,從0開始
  • // 像素點數也代表了波長數組和光譜數組的長度Variant numberOfPixels = wrapper.OleFunction<int>("GetNumberOfPixels", 0);
  • 獲取光譜儀的序列號,索引為光譜儀的臺數索引
  • // 獲取光譜儀序列號Variant serialNumber = wrapper.OleFunction<int>("GetSerialNumber",0);
  • 獲取光譜儀的波長數組,長度為步驟3中獲取的數據
  • // 獲取光譜儀的波長數組,并添加到listbox中顯示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);
  • 設置光譜儀的積分時間,積分時間即為光譜儀的曝光時間,積分時間越長,采集的光譜強度值越大,需要返回的數據的時間越長,積分時間以微秒為單位,為整數類型(不同型號的光譜儀的最短積分時間不同)
  • // 設置光譜儀的積分時間,底層庫的積分時間單位是微秒//一般型號的光譜儀的積分時間都是從毫秒開始的,所以要乘以1000long integrationTime= Edit4->Text.ToInt()*1000;wrapper.OleFunction<int, long>("SetIntegrationTime", 0, integrationTime);
  • 設置光譜儀的平均次數,光譜儀會采集3次光譜,然后將3次的光譜數據求平均之后返回
  • //平均次數乘以積分時間是采集一次光譜的時間//例如平均次數是3次,積分時間是1秒,則采集一次光譜的時間為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);
  • 釋放資源
  • //釋放 COM 接口的引用CoUninitialize();

    聯系方式

    使用過程中有任何問題可以發郵件聯系zmlin@choptics.com

    總結

    以上是生活随笔為你收集整理的C++ Builder调用辰昶仪器ChNetDriver库的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。