若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/163643823
长沙红胖子Qt·西安(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中...
开发专栏:项目实战
需求
1.搜索镜头,打开镜头,关闭镜头;
2.获取镜头所有信息,协议版本、固件版本、修订版本、I2C地址、镜头型号、温度;
3.获取设备支持的功能,是否支持缩放、对焦、光圈、滤镜等功能;
4.打开设备后,判断是否已初始化,不必每次打开都初始化对应功能,避免调整已经设置好的位置;
5.支持的功能,可获取所有属性和对应的动态属性,上下限制;
6.支持的功能,可动态获取对应的设置值;
7.支持的功能,可设置步长,目标地址,电机速度,补偿开关等;
8.高度封装的模块化设计,子线程异步交互;
9.完整的日志信息,记录每次操作;
10.高度完善的封装类,脱离设备驱动层;
相关博客
《康标达工业镜头开发笔记(一):康标达(Computar)工业镜头介绍、搭建SDK基础环境》
Demo_v1.0.0





工具运行包下载地址
windows:https://download.csdn.net/download/qq21497936/93255931
QQ技术群,找到博主群,加进Q群,点击"文件 "搜索"lensTool",群内与博文同步更新)
模块化

Demo关键源码
LenManager.pri
cpp
INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD
HEADERS += \
$$PWD/LensManager.h \
$$PWD/lensCommon.h
SOURCES += \
$$PWD/LensManager.cpp
# 镜头sdk
LENS_SDK_DIR = $$PWD/lensSdkX64
INCLUDEPATH += $$LENS_SDK_DIR/include
LIBS += -L$$LENS_SDK_DIR/lib
LIBS += -lSLABHIDtoSMBus
HEADERS += \
$$PWD/lensSdkX64/include/SLABCP2112.h \
$$PWD/lensSdkX64/include/Types.h \
$$PWD/lensSdkX64/include/configVal.h \
$$PWD/lensSdkX64/include/devAddr.h \
$$PWD/lensSdkX64/include/silabs_defs.h \
$$PWD/lensSdkX64/include/silabs_sal.h
SOURCES += \
$$PWD/lensSdkX64/src/LensCtrl.c \
$$PWD/lensSdkX64/src/UsbCtrl.c
LensManaer.h
cpp
#ifndef LensManager_H
#define LensManager_H
#include <QObject>
#include <QMutex>
#include <QMutexLocker>
#include "lensCommon.h"
class LensManager : public QObject
{
Q_OBJECT
private:
explicit LensManager(QObject *parent = 0);
public:
static LensManager * getInstance();
signals:
void signal_logMessage(QString s); // 信号: 日志信息
signals:
void signal_searchLensNumResult(bool ok, int numDevices); // 信号: 搜索摄像头数量结果
void signal_searchLensInfoResult(bool ok, QList<LensInfo> listLensInfo); // 信号: 搜索摄像头信息结果
void signal_openDeviceResult(bool succeed, LensInfo lensInfo); // 信号: 打开设备结果
void signal_getGeneralInfoResult(bool ok, LensInfo lensInfo); // 信号: 获取镜头通用信息
void signal_closeDeviceResult(); // 信号: 关闭设备
signals: // 缩放: 滤镜操作结果
void signal_getZoomInfoResult (bool ok, LensInfo lensInfo);
void signal_initializeZoomResult(bool ok, LensInfo lensInfo);
void signal_setZoomBacklash (bool ok, LensInfo lensInfo);
void signal_setZoomSpeedResult (bool ok, LensInfo lensInfo);
void signal_setZoomPosResult (bool ok, LensInfo lensInfo);
signals: // 信号: 对焦操作结果
void signal_getFocusInfoResult (bool ok, LensInfo lensInfo);
void signal_initializeFocusResult(bool ok, LensInfo lensInfo);
void signal_setFocusBacklash (bool ok, LensInfo lensInfo);
void signal_setFocusSpeedResult (bool ok, LensInfo lensInfo);
void signal_setFocusPosResult (bool ok, LensInfo lensInfo);
signals: // 信号: 光圈操作结果
void signal_getIrisInfoResult (bool ok, LensInfo lensInfo);
void signal_initializeIrisResult(bool ok, LensInfo lensInfo);
void signal_setIrisBacklash (bool ok, LensInfo lensInfo);
void signal_setIrisSpeedResult (bool ok, LensInfo lensInfo);
void signal_setIrisPosResult (bool ok, LensInfo lensInfo);
signals: // 信号: 滤镜操作结果
void signal_getFilterInfoResult (bool ok, LensInfo lensInfo);
void signal_initializeFilterResult(bool ok, LensInfo lensInfo);
void signal_setFilterPosResult (bool ok, LensInfo lensInfo);
public slots:
void slot_start();
void slot_stop();
public slots:
void slot_searchLensNum(); // 搜索镜头数量
void slot_searchLensInfo(); // 搜索镜头信息
void slot_openDevice(LensInfo lensInfo); // 打开镜头
void slot_getGeneralInfo(); // 获取通用信息
void slot_closeDevice(); // 关闭镜头
public slots: // 缩放
void slot_getZoomInfo(); // 对焦: 取信息
void slot_initializeZoom(); // 对焦: 初始化
void slot_setZoomBacklash(bool on); // 对焦: 回差补偿
void slot_setZoomSpeed(quint16 speed); // 对焦: 设置移动速度
void slot_setZoomPos(quint16 pos); // 对焦: 设置位置
public slots: // 对焦
void slot_getFocusInfo(); // 对焦: 取信息
void slot_initializeFocus(); // 对焦: 初始化
void slot_setFocusBacklash(bool on); // 对焦: 回差补偿
void slot_setFocusSpeed(quint16 speed); // 对焦: 设置移动速度
void slot_setFocusPos(quint16 pos); // 对焦: 设置位置
public slots: // 光圈
void slot_getIrisInfo(); // 对焦: 取信息
void slot_initializeIris(); // 对焦: 初始化
void slot_setIrisBacklash(bool on); // 对焦: 回差补偿
void slot_setIrisSpeed(quint16 speed); // 对焦: 设置移动速度
void slot_setIrisPos(quint16 pos); // 对焦: 设置位置
public slots: // 滤镜
void slot_getFilterInfo(); // 对焦: 取信息
void slot_initializeFilter(); // 对焦: 初始化
void slot_setFilterPos(quint16 pos); // 对焦: 设置位置
/*↓↓↓↓↓↓↓↓↓↓ 封装底层api,不对外开放 ↓↓↓↓↓↓↓↓↓↓*/
...
/*↑↑↑↑↑↑↑↑↑↑ 封装底层api,不对外开放 ↑↑↑↑↑↑↑↑↑↑*/
private:
bool _running;
private:
static LensManager * _pInstance;
static QMutex _mutex;
private:
LensInfo _lensInfo; // 当前镜头
};
#endif // LensManager_H
LensWidget.h
cpp
#ifndef LENSWIDGET_H
#define LENSWIDGET_H
#include <QWidget>
#include <QThread>
#include "LensManager.h"
namespace Ui {
class LensWidget;
}
class LensWidget : public QWidget
{
Q_OBJECT
public:
explicit LensWidget(QWidget *parent = nullptr);
~LensWidget();
protected:
void initControl();
void clearControl();
void updateGeneralInfo(LensInfo lensInfo);
void updateZoomInfo(LensInfo lensInfo);
void updateFocusInfo(LensInfo lensInfo);
void updateIrisInfo(LensInfo lensInfo);
void updateFilterInfo(LensInfo lensInfo);
protected:
void logMessage(QString str);
protected slots:
void slot_logMessage(QString s);
protected slots:
void slot_searchLensNumResult(bool ok, int num);
void slot_searchLensInfoResult(bool ok, QList<LensInfo> listLensInfo);
void slot_openDeviceResult(bool succeed, LensInfo lensInfo);
void slot_getGeneralInfoResult(bool ok, LensInfo lensInfo);
void slot_closeDeviceResult();
private slots: // 通用按钮
void on_pushButton_searchLensInfo_clicked();
void on_pushButton_open_clicked();
void on_pushButton_close_clicked();
void on_pushButton_getGeneralInfo_clicked();
void on_pushButton_clearLogMessage_clicked();
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 缩放 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
protected slots: // 槽函数 对焦操作结果
void slot_getZoomInfoResult (bool ok, LensInfo lensInfo);
void slot_initializeZoomResult(bool ok, LensInfo lensInfo);
void slot_setZoomBacklash (bool ok, LensInfo lensInfo);
void slot_setZoomPosResult (bool ok, LensInfo lensInfo);
void slot_setZoomSpeedResult (bool ok, LensInfo lensInfo);
private slots: // 缩放相关操作
void on_pushButton_zoom_init_clicked();
void on_pushButton_zoom_getInfo_clicked();
void on_pushButton_zoom_doStepSub_clicked();
void on_pushButton_zoom_doStepAdd_clicked();
void on_pushButton_zoom_jumpAddress_clicked();
void on_pushButton_zoom_setSpeed_clicked();
void on_pushButton_zoom_on_clicked();
void on_pushButton_zoom_off_clicked();
void on_horizontalSlider_zoom_currentValue_valueChanged(int value);
void on_horizontalSlider_zoom_currentValue_sliderReleased();
void on_horizontalSlider_zoom_currentValue_actionTriggered(int action);
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 缩放 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 对焦 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
protected slots: // 槽函数 对焦操作结果
void slot_getFocusInfoResult (bool ok, LensInfo lensInfo);
void slot_initializeFocusResult(bool ok, LensInfo lensInfo);
void slot_setFocusBacklash (bool ok, LensInfo lensInfo);
void slot_setFocusPosResult (bool ok, LensInfo lensInfo);
void slot_setFocusSpeedResult (bool ok, LensInfo lensInfo);
private slots: // 对焦相关操作
void on_pushButton_focus_init_clicked();
void on_pushButton_focus_getInfo_clicked();
void on_pushButton_focus_doStepSub_clicked();
void on_pushButton_focus_doStepAdd_clicked();
void on_pushButton_focus_jumpAddress_clicked();
void on_pushButton_focus_setSpeed_clicked();
void on_pushButton_focus_on_clicked();
void on_pushButton_focus_off_clicked();
void on_horizontalSlider_focus_currentValue_valueChanged(int value);
void on_horizontalSlider_focus_currentValue_sliderReleased();
void on_horizontalSlider_focus_currentValue_actionTriggered(int action);
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 对焦 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 光圈 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
protected slots: // 槽函数 对焦操作结果
void slot_getIrisInfoResult (bool ok, LensInfo lensInfo);
void slot_initializeIrisResult(bool ok, LensInfo lensInfo);
void slot_setIrisBacklash (bool ok, LensInfo lensInfo);
void slot_setIrisPosResult (bool ok, LensInfo lensInfo);
void slot_setIrisSpeedResult (bool ok, LensInfo lensInfo);
private slots: // 光圈相关操作
void on_pushButton_iris_init_clicked();
void on_pushButton_iris_getInfo_clicked();
void on_pushButton_iris_doStepSub_clicked();
void on_pushButton_iris_doStepAdd_clicked();
void on_pushButton_iris_jumpAddress_clicked();
void on_pushButton_iris_setSpeed_clicked();
void on_pushButton_iris_on_clicked();
void on_pushButton_iris_off_clicked();
void on_horizontalSlider_iris_currentValue_valueChanged(int value);
void on_horizontalSlider_iris_currentValue_sliderReleased();
void on_horizontalSlider_iris_currentValue_actionTriggered(int action);
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 光圈 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
protected:
void timerEvent(QTimerEvent *event);
private:
Ui::LensWidget *ui;
private:
LensManager *_pLensManager;
QThread *_pLensManagerThread;
private:
QList<LensInfo> _listLensInfo;
LensInfo _lensInfo;
};
#endif // LENSWIDGET_H
工具工程模板v1.1.0

本文章博客地址:https://hpzwl.blog.csdn.net/article/details/163643823