ChopticsDriver调用说明

介绍

本篇介绍了关于应用程序控制光谱仪获取光谱的一些基本序列操作。这些功能对于所有辰昶光谱仪都是普遍适用的。本章详细介绍了这些基本序列操作方法,包括涉及的所有参数和数据类型。

函数说明

  1. 创建/实例化Wrapper对象:
    在控制光谱仪之前,首先应创建一个Wrapper对象。这是实现控制谱仪所有功能的一把钥匙。保证了应用程序只实例化一个Wrapper的对象。
	Wrapper wrapper = new Wrapper ();
  1. 打开所有光谱仪:
    其次,查询USB端口识别的所有连接的光谱仪。函数OpenAllSpectrometers()将打开所有识别到的谱仪,调用某台谱仪的时候根据索引值(index)调用。
    OpenAllSpectrometers()方法返回从0到N的一个整数前,即为所识别到的光谱仪总数。在打开所有光谱仪后,可通过wrapper.GetNumberOfSpectrometersFound()函数来获得光谱仪的总数。
	int  nuberOfSpectrometers;numberOfSpectrometers = wrapper. OpenAllSpectrometers();numberOfSpectrometers = wrapper.GetNumberOfSpectrometersFound();
  1. 获取光谱仪名称:
    这个操作是可选的。当你想知道你调用的谱仪名称的时候可以根据当前索引值(spectrometerIndex)调用函数wrapper.GetSpectrometerName(int spectrometerIndex)来获取光谱仪的名称。
	int  spectrometer = 0;string  spectrometerName = wrapper.GetSpectrometerName( int spectrometerIndex);
  1. 获取光谱仪光谱:
    光谱仪光谱数据是一个简单的一维数组,存储类型为double类型。不同光谱仪返回的光谱数据大小也不同,根据当前谱仪的索引值(spectrometerIndex)调用函数wrapper.GetNumberOfPixelsOfSpectrometer(int spectrometerIndex)返回的当前谱仪的像素点数来决定数组的大小。通过函数wrapper.GetSpectrumFromSpectrometer (int spectrometerIndex)将返回光谱数据数组,光谱数据数组对应的波长数组通过函数
    wrapper.GetCorrectionWavelengthOfSpectrometer(int spectrometerIndex)返回。
	int  spectrometer = 0;int  numberOfPixels =w.GetNumberOfPixelsOfSpectrometer(0); double[]  wavelength = new  double[numberOfPixels];double[]  counts = new  double[numberOfPixels]; wavelength = wrapper. GetCorrectionWavelengthOfSpectrometer (0);counts=wrapper.GetSpectrumFromSpectrometer(0);
  1. 从光谱仪中读取探测器序列号:
    通过GetDetectorSerialNumber (int spectrometerIndex)函数来读取探测器序列号。
	int  spectrometer = 0; string derectorSN = wrapper. GetDetectorSerialNumber (spectrometerIndex);
  1. 设置窗口平滑:
    窗口平滑就是通过一定范围内的所有连续的像素点的值进行平均来平滑光谱的像素点的值。每个光谱中的像素点都平均它左右两边的N个像素点。一个新的光谱就是这些像素点的值平均后的数据。
	int  spectrometer = 0;int  windowsOfBox = 0;wrapperSetWindowsOfBoxToSpectrometer (spectrometerIndex , windowsOfBox)
  1. 设置平均次数:
    平均次数是另一种用来减少获得的光谱的噪音的方法。这种技术是通过连续的多组光谱数据进行平均从而产生的一个平均后的光谱数据。这种算法是对应的像素点在不同光谱数据中对应的值求平均后为该点像素点对应的值。例如:平均次数为5,将五个连续的光谱数据pixel[0] 像素点对应的值相加,再除以5。这个数据将作为pixel[0] 像素点对应的值返回给用户。其他像素点对应值的求法跟此方法一致。
	int  spectrometer = 0;int   average = 1;wrapper. SetAverageToSpectrometer (spectrometerIndex , average)
  1. 设置积分时间:
    积分时间是允许光通过光谱仪探测器一段长度的时间。在光弱的情况下,可以通过增加积分时间来获得一个有意义的光谱;在光强的情况下,也可以通过减小积分时间来调控。当该一个或多个的CCD像素点或井已被完全地排出(或在某些检测器完全填充)时就是出现了饱和。当饱和出现时,多余的光子进入井之后没有影响,光谱也变得失真。在绘制饱和了的光谱时,会出现峰被修剪的现象。
    积分时间的单位是毫秒。通过光谱仪的文件可以了解到该款光谱仪所支持的最大和最小积分时间。
	int  spectrometer = 0;int  integrationTime = 100;wrapper.SetIntegrationTimeToSpectrometer (spectrometerIndex , intTime)
  1. 设置外触发模式:
    用户可以通过设置外触发模式来控制光谱仪的采谱方式。外触发模式TriggerMode一共有4种方式:
  • TriggerMode.normal:正常模式,也是软件中的默认模式,软件每调用一次GetSpectrumFromSpectrometer()函数,则软件会采集一次并返回数据;
  • TriggerMode.level :电平触发模式,通过外部给光谱仪电平信号,则光谱仪会采集一次并返回光谱数据;
  • TriggerMode.synchronous:同步触发模式,通过外部给光谱仪同步信号,则光谱仪会采集一次并返回光谱数据;
  • TriggerMode.edge:沿触发模式,通过外部给光谱仪沿信号,则光谱仪会采集一次并返回光谱数据;
	int  spectrometerIndex = 0;wrapper.SetTriggerOfMode(spectrometerIndex, TriggerMode.normal);
  1. 制冷控制
    如果是制冷型光谱仪,给光谱仪插入5V电源后(超过5V电源可能会烧坏光谱仪!不插外接电源,则光谱仪制冷功能无法开启),可以通过设置光谱仪的制冷函数来给光谱仪设置温度,如果是非制冷型光谱仪,则调用光谱仪制冷相关函数后,不会有任何相应反馈
//开启光谱仪的散热风扇,必须在开启制冷前先开启风扇,否则可能导致光谱仪CCD过热而性能不稳定w.SetFanOn();//开启光谱仪的热电制冷w.SetTECOn();//设置制冷温度,可以设置的温度区间可以通过获取最大或者最小温度来了解。	//设置的温度越小,光谱仪的噪声越小 ,但是如果温度过小,光谱仪无法稳定在该温度,则可能导致光谱仪采集光谱数据不稳定w.SetTemperature(-20);//获取光谱仪的CCD温度,可以根据获取的温度来判断设置的温度是否合理int celsius = w.ReadTemperature();//关闭光谱仪的热电制冷w.SetTECOff();//关闭光谱仪风扇w.SetFanOff();

附1:
安全建议:
在每次设完积分时间后,光谱仪会自动Reset以清除缓存。如在此时读取光谱,则有较小概率(<1/10000)出现取出一帧错乱光谱的现象。为完全避免此种情况的发生,建议在每次新设完积分时间t毫秒后,再等待t毫秒(可用timer)后再开始第一次查询、采谱。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/802481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日OJ题_两个数组dp④_力扣44. 通配符匹配

目录 力扣44. 通配符匹配 解析代码 力扣44. 通配符匹配 44. 通配符匹配 难度 困难 给你一个输入字符串 (s) 和一个字符模式 (p) &#xff0c;请你实现一个支持 ? 和 * 匹配规则的通配符匹配&#xff1a; ? 可以匹配任何单个字符。* 可以匹配任意字符序列&#xff08;包…

React 18 中常见的生命周期方法

1. 挂载阶段&#xff08;Mounting Phase&#xff09; constructor() constructor() 是 React 组件的构造函数&#xff0c;用于初始化组件的状态和绑定方法。在组件实例创建时调用&#xff0c;且只会调用一次。 static getDerivedStateFromProps() static getDerivedStateFr…

全面了解网络性能监测:从哪些方面进行监测?

目录 摘要 引言 CPU内存监控 磁盘监控 网络监控 GPU监控 帧率监控 总结 摘要 本文介绍了网络性能监测的重要性&#xff0c;并详细介绍了一款名为克魔助手的应用开发工具&#xff0c;该工具提供了丰富的性能监控功能&#xff0c;包括CPU、内存、磁盘、网络等指标的实时…

[C语言]——柔性数组

目录 一.柔性数组的特点 二.柔性数组的使用 三.柔性数组的优势 C99中&#xff0c;结构体中的最后⼀个元素允许是未知大小的数组&#xff0c;这就叫做『柔性数组』成员。 typedef struct st_type //typedef可以不写 { int i;int a[0];//柔性数组成员 }type_a; 有些编译器会…

B. Burning Midnight Oil Codeforces Round 112 (Div. 2)

题目链接&#xff1a; Problem - 165B - Codeforceshttps://codeforces.com/problemset/problem/165/B 题目大意&#xff1a; 最后写了至少n个&#xff0c;每次衰减k倍&#xff08;/k&#xff09;&#xff0c;问最初的v最小为多少。 思路&方法&#xff1a; 二分答案。 AC代…

2024零废弃日青山少年可持续工坊走进南湖社区

“零废弃”不代表完全不产生任何垃圾&#xff0c;而是一种“尽可能避免产生废弃”的生活态度&#xff0c;每一个人都可以从零开始&#xff0c;从日常的随手小事开始&#xff0c;珍惜每一件物品、珍视每一种情绪&#xff0c;为生活腾出更大的空间。 2024零废弃日&#xff0c;北…

JS 表单验证

点击注册的时候&#xff0c;渲染出来&#xff0c;验证码是自动获取出来的 html&#xff1a; <div class"div1">用户名<input type"text" id"yhm"><span id"span1"></span><br>密码<input type"…

《Git版本控制管理》笔记

第三章 起步 git --version查看版本号git --help查看帮助文档裸双破折号分离参数 git diff -w master origin – tools/Makefile将当前目录或任何目录转化为Git版本库 git init 初始化之后项目目录中&#xff0c;有名为.git的文件git status 查看git状态git commit 提供日志消…

贪心算法|135.分发糖果

力扣题目链接 class Solution { public:int candy(vector<int>& ratings) {vector<int> candyVec(ratings.size(), 1);// 从前向后for (int i 1; i < ratings.size(); i) {if (ratings[i] > ratings[i - 1]) candyVec[i] candyVec[i - 1] 1;}// 从后…

格式化字符串漏洞原理及其利用(附带pwn例题讲解)

写在前面&#xff1a; 本篇博客为本人原创&#xff0c;但非首发&#xff0c;首发在先知社区 原文链接&#xff1a; https://xz.aliyun.com/t/14253?time__1311mqmx9QiQi%3D0%3DDQoDsNOfptD8nDCFdNNK4D&alichlgrefhttps%3A%2F%2Fxz.aliyun.com%2Fu%2F74789各位师傅有兴趣…

JQuery(三)---【使用JQuery动态设置浏览器窗口尺寸、JQuery的遍历】

零.前言 JQuery(一)---【JQuery简介、安装、初步使用、各种事件】-CSDN博客 JQuery(二)---【使用JQuery对HTML、CSS进行操作】-CSDN博客 一.JQuery动态设置浏览器窗口尺寸大小 1.1width()和height()方法 width()&#xff1a;设置或者返回元素的宽度(不包括内边距、边框或外…

React中的函数组件和类组件的区别

React 中的函数组件和类组件是两种不同的组件形式&#xff0c;它们之间有一些区别&#xff1a; 1、定义方式: 函数组件是一个普通的 JavaScript 函数&#xff0c;以函数的形式定义组件&#xff0c;例如&#xff1a; function FunctionComponent() {return <div>Hello,…

HTML5标签(网页编程)

一、常用标签 HTML5&#xff08;或HTML&#xff09;中有很多常用的标签&#xff0c;这些标签用于构建网页的结构和内容。以下是一些常用的HTML5标签&#xff1a; 1. 标题标签 <h1> 到 <h6>&#xff1a;定义六个级别的标题&#xff0c;<h1> 级别最高&#…

React - 你知道在React组件的哪个阶段发送Ajax最合适吗

难度级别:中级及以上 提问概率:65% 如果求职者被问到了这个问题,那么只是单纯的回答在哪个阶段发送Ajax请求恐怕是不够全面的。最好是先详细描述React组件都有哪些生命周期,最后再回过头来点题作答,为什么应该在这个阶段发送Ajax请求。那…

智慧校园预付费水电表控制系统

在智慧校园建设中&#xff0c;预付费水电表控制系统成为了不可或缺的一部分&#xff0c;它采用了先进的信息技术手段确保校园水电资源的高效管理和使用。这种系统通过智能化、信息化的手段&#xff0c;不仅优化了能源管理&#xff0c;还大幅提升了校园管理的现代化水平。本文将…

FPGA(Verilog)实现uart传输协议传输数据(含仿真)

目录 实现功能&#xff1a; 1.接收uart串行数据&#xff0c;输出并行数据(1byte)。 2.输入并行数据(1byte)&#xff0c;输出uart串行数据。 3.完成uart传输的1次环回。 uart协议的1帧数据传输 模块封装-port设置 Verilog代码实现 1.uart接收模块:接收串行数据,输出并行数…

​SCP收容物000

注 &#xff1a;本文是特别版&#xff0c;本文只供开玩笑 ,与steve_gqq_MC合作。 --------------------------------------------------------------------------------------------------------------------------------- Ittm # ŚČР-000 -----------------------------…

Android Q Download文件存储

11 以上 存放 Download 目录中 只能通过uri 进行读取 且只能APP 安装后存放的文件 才有访问权限 APP 卸载之后 数据库中权限会被移除 无法再通过文件名称进行查询 这边通过比较描述字段进行判断是否下载过文件 11 以上APP进行卸载后在安装下载 会出现重复文件 不知是否还有其他…

开源区块链系统/技术 总结(欢迎补充,最新)

1. FISCO BCOS FISCO BCOS 2.0 技术文档 — FISCO BCOS 2.0 v2.9.0 文档https://fisco-bcos-documentation.readthedocs.io/ 2. ChainMaker&#xff08;长安链&#xff09; 文档导航 — chainmaker-docs v2.3.2 documentationhttps://docs.chainmaker.org.cn/v2.3.2/html/in…

力扣经典150题第十一题:H指数

目录 计算研究者的 H 指数问题描述示例 解决方案排序 线性扫描 复杂度分析测试示例总结与展望结语 计算研究者的 H 指数 在本文中&#xff0c;我们将讨论如何计算研究者的 H 指数。H 指数是衡量研究者学术影响力的一种指标&#xff0c;它代表了一个研究者至少发表了几篇论文&…