某光谱仪程序开发
文章目录
- 某光谱仪程序开发
- 摘要
- 安装驱动
- 注册COM组件
- 导出.h和.cpp
- 在Qt 中添加源文件
- 开发
- 打包程序
关键字:
Demo
、
Qt
、
COM
、
dumpcpp
、
C++
摘要
今天接到一个临时小任务,写一个的项目子模块的Demo,以供和专家们交流一下项目技术方案是否可行。用的是一个第三方的光谱仪,需要使用Qt 调用光谱仪的SDK,并且做一些加加减减处理。但是厂家给的竟然不是纯C++版的开发库,而是基于COM组件的库,开始看资料的时候并没有注意,光看到就是那几个接口,想着很简单,绘制曲线也是之前用过QCustcomPlot,认为没有啥难度,实际开发发现是COM组件,巧了,我还没有搞过,得研究一番。
安装驱动
按照厂家提供的文档,第一步就是安装设备对应的驱动,这里简单截图一下,具体每家都不一样,不做太多描述。
我这里直接弹出确定了,是因为我装过一次了,又懒得卸载驱动了,会提示一个安装驱动的窗口来,点击安装即可。
注册COM组件
这里可以使用win提供的指令来注册,我这里厂家还贴心提供了bat搅拌,我就直接一键注册了。具体可以百度下COM组件注册
参考链接:https://baike.baidu.com/item/COM%E7%BB%84%E4%BB%B6%E6%B3%A8%E5%86%8C/725400
导出.h和.cpp
这里就要大大的夸夸我Qt 的强大了,正当我一筹莫展的时候,群友提示我Qt 有工具可以直接将COM组件导出.h和.cpp,直接调用就好,这个工具就是神奇的dumpcpp.exe
,不过这里还是要确定一下我们的COM的ID的。具体方法可以查出册表。我这里厂家也贴心给了脚本,就偷懒了
这里有个问题需要主要的就是,我使用上面的ID是导出失败了,只有使用下面的ID才可以使用,因为咱第一次搞,也不知道其中的缘由,先这么滴,搞起来,最终导出了我想要的.h和.cpp
在Qt 中添加源文件
这个就不用太多描述了,直接在Qt项目中添加现有文件,选中,下一步即可。在使用的地方包含头文件即可。
开发
这个就是按照厂家提供的流程,在Qt 中调用接口即可,部分代码如下
bool SpectroMeter::init()
{
m_wrapper = new IdeaOptics::Wrapper();
if(m_wrapper->OpenAllSpectrometers() == 0)
{
if(m_timerGetInfor->isActive())
m_timerGetInfor->stop();
return false;
}
m_wrapper->setIntegrationTime(m_index,3000);
m_name = m_wrapper->getName(m_index);
m_serialNumber = m_wrapper->getSerialNumber(m_index);
m_pixels = m_wrapper->getNumberOfPixels(m_index);
m_temperature = m_wrapper->getFeatureControllerBoardTemperature(m_index);
m_timerGetInfor->start(1000);
m_timerGetData->start(1000);
return true;
}
打包程序
这个就是使用Qt 自带的windeployqt 直接导出需要的库即可,不过要是到其他电脑上可运行,还需要包厂家的驱动和COM组件都带上,在需要的电脑安装驱动和COM组件,今天小程序完成。