公司动态

康标达工业镜头开发笔记(一):康标达(Computar)工业镜头介绍、搭建SDK基础环境

📅 2026/8/4 20:53:30
康标达工业镜头开发笔记(一):康标达(Computar)工业镜头介绍、搭建SDK基础环境
若该文为原创文章转载请注明原文出处本文章博客地址https://blog.csdn.net/qq21497936/article/details/163438166长沙红胖子Qt·西安长沙创微智科博文大全开发技术集合包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等持续更新中…Qt开发专栏三方库开发技术上一篇没有了…下一篇敬请期待…前言康标达Computar工业镜头SDK二次开发笔记本篇介绍基基本信息和搭建基础sdk二次开发环境模板。题外话相较于传统手动调焦工业镜头这款自带步进电机、支持上位机软件实时控制对焦、光圈、变焦非常适合自动化在线视觉检测、多工况切换成像、精密视觉标定场景。大多文章只讲工业相机调用、OpenCV 图像处理极少有完整的康标达镜头SDK二次开发实操内容因此打算整理系列开发笔记从硬件认知、环境搭建、指令调用、代码封装一步步记录方便后续复用也给做机器视觉电控镜头开发的同行参考。康标达Computar概述康标达Computar隶属于日本 CBC 集团是专注机器视觉赛道的专业工业镜头品牌核心面向自动化工业检测场景不生产民用消费级摄影镜头是国内智能制造、视觉检测项目主流选用的日系工业镜头品牌。Computar 电控变焦镜头电动镜头内置步进马达驱动 Focus对焦、Zoom变焦、Iris光圈三组执行机构高端型号扩展 Filter 滤镜切换模组通讯接口主流为SMBus/I2C、RS485 两种方案采购选型时务必确认接口类型二者 SDK 与硬件接线互不兼容。核心功能Zoom变焦控制调整镜头焦距改变视场大小Focus对焦控制调节成像清晰度Iris光圈控制调整通光量、景深Filter滤镜模组切换选配型号支持位置读取实时读取当前焦段、对焦位置、光圈绝对坐标参数记忆支持上位机保存多组位置预设值一键切换工况特性上电硬件初始化行为镜头上电后部分型号会执行自动初始化回零动作马达自动移动至机械原点。多镜头并行控制场景系统运行中新增镜头连接、反复重连设备时不希望每次通讯建立就执行初始化回零。镜头移位会导致现场标定失效、成像视野跳变。但是可以通过软件跳过初始化仅握手通讯。各路模组独立状态标志镜头不存在全局统一初始化标志位。Zoom 缩放、Focus 对焦、Iris 光圈、Filter 滤镜四路执行机构相互独立各自拥有独立【初始化完成标志位】。各路电机初始化状态、运动状态互不耦合可以单独判断单路模组工作状态。多镜头组网限制I2C 版本依靠设备地址区分多镜头可修改镜头从机地址实现多路挂载RS485 版本总线式组网依靠设备 ID 区分需要做好地址管理避免多镜头总线冲突。SDK编程环境获取sdk后基本信息如下操作系统Windows 10 / Windows 11优先开发框架C / Qt推荐便于搭建可视化调试上位机编译器MSVC2019 / MSVC2022辅助工具官方 Demo 调试软件、串口 / I2C 总线抓包工具图像处理配套OpenCV可选用于实时成像观测镜头调节效果sdk demo给一个简单的无界面demo的工程经过笔者二次阅读理解之后分理出可用的最小接口sdk部分并进行模块化处理之后由于本人追求精益求精构架设计有部分是.c代码发现提供的sdk中代码同类相似功能有几种编码和设计小思路区别导致的差异进行了少量的代码分层处理和思路修正尽可能的统一。存在的几个问题extern变量飞main函数中的定义全局变量飞到底层api控制中导致api接口无法与main分割同类功能类似变量获取上下限值一种是机械上下限一种是功能是软件上下限部分变量在控制底层封装中就赋值部分是业务中赋值。花了不少时间研究其定义和设计思路并尽可能不动sdk的前提下进行了少量新增修正总体代码还是可以的而且有代码参考运行看结果远比没有好还是感谢的不然需要去看文档寄存器了熟悉研究了其工作量比预估翻倍参考单片机寄存器通讯的I2C通讯一样。基础SDK二次开发环境搭建步骤步骤一获取sdk这里直接是用进行二次整理的sdk起步。步骤二新建工程和相机模块建立工程然后新建相机模块工程展示如下步骤三引入sdk在pri中# 镜头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因为有部分控制.c代码接口需要一起编译添加.了c文件以及所有头文件。步骤四demo代码测试基础添加头文件#ifdef__cplusplusexternC{#endif#includeconfigVal.h#includeSLABCP2112.h#includedevAddr.h#includeLensCtrl.h#ifdef__cplusplus}#endif步骤五运行结果测试可以搜索到模块化Demo关键源码头文件包含#ifdef__cplusplusexternC{#endif#includeconfigVal.h#includeSLABCP2112.h#includedevAddr.h#includeLensCtrl.h#ifdef__cplusplus}#endif源码voidLensManager::testEnv(){/* typedef unsigned long DWORD; */// 步骤一: 搜索usb镜头DWORD numDevis;intretHidSmbus_GetNumDevices(numDevis,VID,PID);LOG搜索到镜头数量:ret;}工程模板v1.0.0上一篇没有了…下一篇敬请期待…本文章博客地址https://blog.csdn.net/qq21497936/article/details/163438166