文章目录

  • 需要的程序
  • 配置步骤流程
    • 安装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组件

  1. 将注册com组件工具文件夹下的gacutil.exe和RegAsm.exe复制到工程文件夹下
  2. 以管理员身份运行打开命令提示符
  3. 在命令提示符窗口中转到工程文件夹下(注册COM组件工具已经复制到该目录下)
  4. 输入命令regasm ChNetDriver.dll /tlb: ChNetDriver.tlb /codebase
  5. 命令提示符窗口提示注册成功则说明注册成功,并且会生成一个ChNetDriver.tlb的文件
  6. 在命令提示符窗口输入命令gacutil /i ChNetDriver.dll

编写C++程序

本例是使用RAD Studio XE4基于C++builder进行开发的VCL Forms Application项目。

调用步骤(常用函数)

主要是介绍常用的函数,其他函数功能可自行查询手册了解

  1. 实例化一个Wrapper类的变量wrapper,所有函数都通过wrapper调用
 //添加头文件,否则会报错#include<ComObj.hpp>// wrapper为光谱仪的包装类 ,所有函数都通过wrapper获取Variant wrapper;// 初始化CoInitialize(NULL);// 获取com组件中的wrapper类实例wrapper = CreateOleObject("ChNetDriver.Wrapper");
  1. 第二步打开光谱仪设备接口
    // 打开光谱仪,在获取wrapper实例之后首先要做这一步Variant openSpectrometers = wrapper.OleFunction("OpenAllSpectrometers");
  1. 以上两步的顺序不可变动,以下顺序可以随意调换。获取光谱仪的像素点数,参数为光谱仪索引,从0开始
     // 像素点数也代表了波长数组和光谱数组的长度Variant numberOfPixels = wrapper.OleFunction<int>("GetNumberOfPixels", 0);
  1. 获取光谱仪的序列号,索引为光谱仪的台数索引
 // 获取光谱仪序列号Variant serialNumber = wrapper.OleFunction<int>("GetSerialNumber",0);
  1. 获取光谱仪的波长数组,长度为步骤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));}}
  1. 获取光谱仪采集的光谱数据,长度为步骤3中获取的数据
 // 获取光谱仪的光谱强度Variant spectrum=    wrapper.OleFunction<int>("GetSpectrum", 0);
  1. 设置光谱仪的积分时间,积分时间即为光谱仪的曝光时间,积分时间越长,采集的光谱强度值越大,需要返回的数据的时间越长,积分时间以微秒为单位,为整数类型(不同型号的光谱仪的最短积分时间不同)
 // 设置光谱仪的积分时间,底层库的积分时间单位是微秒//一般型号的光谱仪的积分时间都是从毫秒开始的,所以要乘以1000long   integrationTime= Edit4->Text.ToInt()*1000;wrapper.OleFunction<int, long>("SetIntegrationTime", 0, integrationTime);
  1. 设置光谱仪的平均次数,光谱仪会采集3次光谱,然后将3次的光谱数据求平均之后返回
    //平均次数乘以积分时间是采集一次光谱的时间//例如平均次数是3次,积分时间是1秒,则采集一次光谱的时间为3秒long   ave= Edit5->Text.ToInt();wrapper.OleFunction<int, long>("SetScansToAverage", 0, ave);
  1. 设置平滑平均
 //设置光谱仪的平滑点数long   bxr= Edit6->Text.ToInt();wrapper.OleFunction<int, long>("SetBoxcarWidth", 0, bxr);
  1. 释放资源
 //释放 COM 接口的引用CoUninitialize();

联系方式

使用过程中有任何问题可以发邮件联系zmlin@choptics.com

C++ Builder调用辰昶仪器ChNetDriver库相关推荐

  1. 【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件

    转自:matlab与C/C++混合编程--在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 date version comments ...

  2. golang 相互引用_Golang与C互用以及调用C的so动态库和a静态库

    Golang与C的关系非常密切,下面主要介绍在Golang中使用C. 一. Golang中嵌入C代码 1 package main 2 3 //#include 4 //#include 5 /* 6 ...

  3. 如何调用腾讯的IP库?

    从网上搜的资料都太老了,是用js调用的,不能用 也报错,我想问下大家现在还能调用腾讯的Ip库吗?能的话怎么调用呢?

  4. 记录一次C语言调用go生成的动态库的踩坑过程

    记录一次C语言调用go生成的动态库的踩坑过程 问题现象 由于某些特殊原因,需要在C语言中调用go语言生成的so,本来挺顺利,一切都运行的很好.突然某一天,不知道怎么回事,再一个新程序中无法正常运行了, ...

  5. android调用 qt so文件路径,Android Java调用Qt写的so库

    有时候,我们反编译apk得到一个so库,如果直接使用这个so库的话,必须使用原来so库同样的package名字,才能用.这样人家反编译你的apk,就知道你侵犯了人家的版权.为了达到混淆的目的,我们可以 ...

  6. qt中调用matlab生成的动态库

    前言: 前面已经实现了在vc中调用matlab生成的动态库,请参考:vc中调用matlab生成的动态库 现在在前面已经生成好的matlab动态库的基础上,在qt中调用matlab生成的动态库.生成ma ...

  7. python视频处理加速的库_Python调用ffmpeg开源视频处理库,批量处理视频

    代码示例 # coding=utf-8 import os import subprocess import datetime import json, pprint import re, time ...

  8. java调用C或者C++动态库dll

    java调用C或者C++动态库dll,本文章使用的是IntelliJ IDEA Community Edition 2021.2.3版本测试的 1.新建项目 linjie.demo,添加类HelloL ...

  9. AS3 调用外部SWF中元件库中的元件 【转】

    参考文章: http://www.blueidea.com/tech/multimedia/2008/5842_2.asp 本文来自CSDN博客,转载请标明出处:http://blog.csdn.ne ...

最新文章

  1. 一个ant的简单实例
  2. 瞎忙不如不忙——读高德拉特《目标》有感
  3. BZOJ1355: [Baltic2009]Radio Transmission
  4. 百度API地图的标注不居中显示,而显示在左上角
  5. 理解spark闭包以及broadcast(转载)
  6. 如何使用Kubernetes的configmap通过环境变量注入到pod里
  7. 关于虚拟机vmware三种网络模式
  8. 跟踪异常–第5部分–使用Spring进行计划
  9. flutter PositionedTransition 实现缩放动画
  10. 辗转相除法应用之倒C语言实现
  11. Sparse Modeling of Intrinsic Correspondences
  12. 初识OPPM一页纸项目管理
  13. ora 01033 linux,ORA-01033: ORACLE initialization or shutdown in progres
  14. 中兴捧月——婚姻匹配问题
  15. 百度提升关键词排名优化软件,百度点击器,百度排名软件,百度竞价助手
  16. 小小的企业邮箱,大大的渠道天地 | 企业服务渠道商系列谈
  17. 使用腾讯地图来获取定位
  18. 对于2019全国高速公路视频联网工作实施方案的理解:视频上云网关与省级视频云平台
  19. iphone计算机怎样打开声音,mac系统启动的时候咚声音怎么开启或关闭?
  20. 安卓项目各文件夹的含义和用处

热门文章

  1. 在Vue2中怎么解决跨域
  2. 命中的蓝黑 生命的圣杯--告诉你一个真正的法切蒂
  3. 三端稳压集成芯片(78L05/78M05/79L05)
  4. 二叉树后序遍历的非递归算法
  5. python实现问卷星自动填写(可以跳过智能验证)
  6. 个人从零开发一款 Android 应用、上线并盈利 | 项目复盘
  7. Chatgpt取代客服?取代客服的其实另有其人
  8. 验收标准到底是不是测试用例?
  9. 公文与计算机知识,公文写作与计算机基础i知识.doc
  10. 整合使用jOOQ面向对象查询