C# 编程基础
8 天1. 变量
4h
▼
- 用于存储数据的容器
- 上位机及视觉数据接收、计算
- 数据交互类型如何选用及注意事项
2. 运算符
4h
▼
- 算术运算符、关系运算符、逻辑运算符、赋值运算符
- 视觉图像坐标转换(九点标定、像素转机械手实际坐标)数学计算
- 视觉形位公差、函数封装计算
3. 控制语句
4h
▼
- if、else、switch 等流程控制
- 上位机工艺流程控制
- 产品 OK/NG 视觉判定
- 多工位逻辑分流及多产品型号无缝切换
4. 数组
2h
▼
- 存储相同类型数据的集合
- 数组大小声明时确定,不可改变
- 存储固定点位的标定数据、多组数据变量存储
5. List / 泛型
4h
▼
- List 是 .NET 框架中的动态数组,可动态调整大小
- 泛型允许在定义类、接口和方法时指定类型参数
- 动态缓存生产历史条码、视觉检测结果队列
- 编写通用的 PLC/串口数据报文解析模板
6. 循环 for / foreach / while
4h
▼
- for 循环:循环固定次数
- foreach 循环:遍历集合
- while 循环:条件满足时循环
- 遍历处理图像 ROI(感兴趣区域)像素
- 遍历当前在线相机/通信客户端
- 后台线程持续轮询 PLC 状态或等待视觉处理完成信号
7. 值类型 / 引用类型
4h
▼
- 值类型存储实际数据,赋值时复制数据
- 引用类型存储对象的引用,赋值时复制引用
- 深入解析坐标点(Struct)与大图/算法对象(Class)的内存机制
- 避免大循环中频繁创建对象导致内存泄漏与 GC 卡顿,保障工业实时性
8. 方法
4h
▼
- 封装代码块,实现特定功能
- 方法可以有参数和返回值
- 将相机初始化、图像特征提取、PLC 读写数据等封装为标准化模块,提高代码复用性
9. 类 / Class
4h
▼
- 对象的蓝图,定义对象的属性和行为
- 抽象工业现场具体硬件:Camera 类、Plc 类、Robot 类
- 将设备状态(是否连接)和动作(触发拍照)进行结构化封装
10. 封装
2h
▼
- 将类的成员变量和方法封装在一起,隐藏内部细节
- 屏蔽海康、巴斯勒等相机 SDK 底层复杂的 C++ 指针与内存管理
- 对外仅暴露安全的 Open、Grab、Close 等简洁接口
11. 继承
4h
▼
- 允许一个类继承另一个类的属性和方法
- 派生类可扩展或修改基类的行为
- 构建通用"相机基类"或"通信基类",不同品牌硬件子类继承复用核心底层逻辑
12. 多态
4h
▼
- 子类对象替换父类对象,方法根据实际类型动态决定
- "换相机/换 PLC 不换代码",主程序仅面向基类编程
- 通过配置文件动态加载具体硬件,极大提高系统可扩展性
13. 接口
4h
▼
- 定义一组方法和属性的契约
- 实现接口时必须实现所有成员
- 规范通信标准(如定义 ICommunication 接口)
- 网口(TCP/IP)与串口(Modbus)自由切换无需改动上层业务逻辑
14. 单例模式
2h
▼
- 确保一个类只有一个实例,提供全局访问点
- 单例模式的线程安全问题
- 用于单机采集、全局配置管理(Config)、日志记录(Log)
- PLC 通信核心对象的独占式管理
15. 单步调试 / 异常处理
4h
▼
- 单步调试:逐行执行代码以查找问题
- 异常处理:处理运行时错误
- 排查 PLC 断线、相机掉线、算法超时等现场故障
- 通过 try-catch 捕获异常,防止上位机因单次通信失败或算法崩溃导致整线闪退停机
16. 命名规范
2h
▼
- 规定变量、方法、类的命名规则,提高代码可读性
- 严格执行工业级代码规范(类名方法名首字母大写,局部变量首字母小写)
- 相机对象(如 camLeft)、PLC 标志位规范化命名
- 确保团队协作与后期现场维护的高效性
C# Winform 桌面应用开发
10 天1. 常规控件介绍
4h
▼
- 常用控件:Button(手动触发)、Label(显示 OK/NG)、TextBox、ComboBox
- 在设计器中添加和配置控件
- 控件的基本属性和事件
- PictureBox 或 CogRecordDisplay 图像显示控件
2. 控件布局
4h
▼
- 布局控件:Panel、FlowLayoutPanel、TableLayoutPanel
- 严格划分图像区与控制区
- 控件的对齐、锚定和停靠属性
- 工业主站屏幕的响应式布局设计,图像等比例缩放不失真
3. 高级控件
6h
▼
- ListView:生产数据看板,动态添加、删除、编辑项(流水号、测量值、判定结果)
- ListView 视图模式(详细信息)
- Chart 控件:绘制良率与产能图表
- 添加实时数据点,设置图表类型(柱状图、折线图、波动趋势图)
- 配置图表的标题、图例和坐标轴
4. 线程 / Task
4h
▼
- 线程的基本概念和在视觉处理(防界面卡死)中的用途
- 创建和启动线程
- Task 类实现异步取图与算法并行计算
- 线程的基本操作:启动、暂停、终止
- 通讯等数据处理时异步执行防止界面假死
5. 事件 / 委托 / 匿名委托 / 回调
6h
▼
- 事件的概念和用途
- 委托的定义和使用
- 匿名委托的使用方法
- 工业相机 SDK 采集完成后的回调函数实现和应用
- BeginInvoke 解决跨线程更新 UI 控件(显示图像与测量结果)引起的线程冲突
6. 线程同步
4h
▼
- 高速流水线中多线程同步的概念和重要性
- lock、Monitor、线程安全队列(ConcurrentQueue)
- 图像队列缓存与生产计数同步
- 快速拍照队列存图处理
7. DLL 动态链接库
4h
▼
- DLL 的概念和用途
- 视觉算法 VisionPro 二次开发类库调用
- PLC 通讯类库调用
- 光源控制器类库调用及使用
8. 多窗体应用 · 模态/非模态对话框
4h
▼
- 创建和管理多个窗体(主界面、参数设置界面、标定配置界面)
- 模态对话框(ShowDialog)和非模态对话框(Show)的使用场景
9. INI 配置文件
2h
▼
- INI 文件的格式和用途
- 存储全局视觉参数:相机 IP、SN、曝光
- 视觉输出基准、旋转中心等参数
- 读取和写入 INI 文件
10. 文件夹操作
2h
▼
- System.IO 命名空间中的文件夹操作
- 创建、删除、移动文件夹
- 动态按日期创建图片保存路径
- 遍历文件夹中的文件,历史 OK/NG 图片定时后台自动清理,防止硬盘存满
11. 串口通信
4h
▼
- 串口通信的基本概念
- SerialPort 类进行串口通信
- 与光源控制器的协议数据发送和接收
12. TCP/IP 通信
6h
▼
- TCP/IP 协议的基本概念
- Socket 或 TcpClient 类进行 TCP/IP 通信
- 视觉软件与爱普生、库卡、发那科、安川、ABB 等机械手、PLC 之间的对位坐标数据和触发信号通信
- 处理网络粘包断包
13. Log4net 日志
2h
▼
- 日志的重要性:记录错误信息(相机断线、算法报错)、用户操作行为、系统运行节拍
- log4net 基本架构:日志记录器(Logger)、输出位置(Appender)、格式化器(Layout)
14. 自定义控件
4h
▼
- 用户控件:组合现有控件创建新控件(图像+指示灯+按钮 → 单相机控制组件)
- 自定义控件:继承自现有控件类,重写 OnPaint 方法
- 图像上自定义 ROI、十字线、边缘检测点的绘制和外观调整
15. 光源控制器
2h
▼
- 常亮/频闪光源控制器的基本功能和通信协议(ASCII/Hex)
- 通过串口或其他通信方式控制光源
- 光源的开关、通道亮度调节
- 多波次分时步进打光触发功能
16. 相机 SDK 二次开发
8h
▼
- 工业相机常用参数:曝光、增益、软硬触发模式、触发源、像素格式
- 相机二次开发全流程:枚举设备、打开相机、注册图像采集回调函数、启动抓拍
- SDK 底层指针(IntPtr/Byte 数组)安全转换为 VisionPro/VisionMaster 图像对象
- 多相机并行架构与断线自动重连
C# VisionPro 视觉算法
12 天1. 软件基本认知
8h
▼
- QuickBuild、Job、通讯管理器、保存、打开文件等基本功能介绍
- 基本程序流程,第一个程序创建及命名规范
- CogCalibCheckerboardTool 标定工具:不同类型标定板、基准符号、畸变校正
- 像素和相机标定参数讲解
2. 测量类工具
8h
▼
- 卡尺工具、区域、计分、极性、空间、模式、结果查找
- 两圆的距离测量、直线和圆距离测量、直线和椭圆距离测量
- 点到圆距离测量、点到椭圆距离测量、线到直线距离测量
- 点到点距离测量、点到线段距离测量、线段到圆距离测量
- 线段到椭圆距离测量、线段直线距离测量、线段线段距离测量
- 参数使用配合实操讲解及练习
3. 识别类工具
8h
▼
- CogIDTool(解码工具):解码格式、解码区域、解码形式
- CogOCRMaxTool(字符识别):字符提取、区段划分、分割参数、训练字符库、分割区域、空间坐标引用
- CogOCVMaxTool(彩色字符识别):彩色相机字符分割提取
- CogColorMatchTool(颜色匹配):建立颜色信息、提取区域、匹配区域
4. 检测类工具
8h
▼
- CogBlobTool(斑点工具):分段模式、极性、连通性、形态学操作、结果限制
- CogHistogramTool(灰度直方图统计):区域形状设定、结果数据分析
- CogIPOneImageTool(基本图像处理):图像加减、卷积、高斯等处理
- 深度学习在检测类项目中的概念导入
5. 定位类工具
8h
▼
- CogCalibNPointToNPointTool(N点标定):像素坐标与实际坐标,像素坐标系与机械坐标系绑定
- CogFindCircleTool(找圆工具):ROI位置、卡尺数量、搜索长度、投影长度、搜索方向、边缘极性
- 找角工具、找椭圆工具、找线段工具:线段空间、卡尺设置、卡尺计分、结果
- 拟合圆工具、拟合椭圆工具、拟合直线:输入参数设置、结果数据分析
6. 综合常用类工具
8h
▼
- 两圆相交、直线与圆相交、直线与椭圆相交、直线与直线相交
- 线段与圆相交、线段与椭圆相交、线段与直线相交、线段与线段相交
- CogPMAlignTool(模板匹配):不同算法应用、接受阈值、建模器、掩模、角度、缩放
- CogPMAlignMultiTool(多模板匹配):组管理、模板分类
- CogFixtureTool(定位空间):工具坐标系的建立及应用
- CogImageConvertTool(转换工具):图像格式转换、通道提取
- CogCopyRegionTool(区域复制工具):复制、填充、区域、配对
- CogPolarUnwrapTool(图像拉伸工具)
- CogAcqFifoTool(取图工具):白平衡、曝光等参数设置
7. 数据类型与脚本基础
4h
▼
- Int、double、bool、string 类型定义、作用、命名规范
- 数组类型、集合、泛型集合的定义与使用
- 黑白、彩色图像类型使用
- 图形标签绘制脚本:声明、命名空间、标签集合遍历、图层显示
8. 图像与数据管理
4h
▼
- 图像保存:创建本地文件夹、保存图像格式分类、程序流控制保存位置及命名
- 数据保存:创建本地数据库、数据分割与保留
- 数据传递:脚本控制工具输入输出参数、脚本计算处理工具结果数据
9. 高级脚本编写
8h
▼
- VisionPro C# 控件库调用及引用
- 相机类接口调用、单例模式封装相机类
- Socket 通讯原理、服务器客户端作用、通讯封装及异步通讯收发
- cogRecordDisplay 控件库使用、实现显示图像
- 相机实时/单张采集图像,设置曝光、亮度、对比度等属性
- cogToolBlockEditV21 控件库使用:实例、保存、修改
- CogCalibNPointToNPointTool / CogPMAlignTool 控件库实例与调用
- 基于 VisionPro 控件库进行九点标定程序封装
VisionMaster 视觉平台
8 天1. VM 软件概述与多方案架构
4h
▼
- 海康 VM 软件的基本功能和模块化界面布局
- 安装、加密狗配置与软件激活
- 千兆网/USB3.0 相机、采集卡等硬件设备驱动安装
- 多方案切换、子流程控制及全局变量的管理与配置
2. 图像采集与图像预处理
6h
▼
- 配置相机参数(曝光、增益、触发模式),单张或连续图像采集
- 图像预处理组合工具:灰度变换、滤波去噪、边缘增强、图像二值化
- 使用图像处理算子为后续算法提供高质量 ROI 源
3. 区域、轮廓分析与 Blob 定位
6h
▼
- 区域(Region)和轮廓(Contour)的概念
- 通过阈值分割、特征筛选创建和操作区域
- 目标与背景的图像分割
- 连通域分析、形态筛选提取特征实现精确定位
4. 形态学操作与图像擦除
4h
▼
- 数学形态学基本概念:膨胀、腐蚀、开运算、闭运算
- 图像去噪、粘连特征断开、孔洞填充和形状分析
- 应用形态学算子提取特征干扰严重的工业工件边缘
5. 几何特征提取与卡尺测量
6h
▼
- 提取高级几何特征:面积、周长、形状因子、圆度
- 一维和二维测量工具(卡尺工具、几何查找工具)
- 长度、宽度、两线距离、圆心坐标、夹角等高精度测量实操
6. 模板匹配与打标对位目标定位
6h
▼
- 基于灰度与形状特征的模板匹配算法
- 掩膜擦除、多模板创建、金字塔层数和匹配算法的选择
- 获取 X, Y, θ 坐标,实现机器人的目标定位与对位识别
7. 缺陷检测与 OK/NG 逻辑判定
6h
▼
- 工业缺陷检测基本方法:划伤、脏污、漏块、断线
- 污点检测、边缘缺陷检测、圆缺陷检测工具
- 缺陷大小、对比度、灰度差等核心参数设置
- 结合逻辑工具输出 OK/NG 结果判定
8. 高精度相机标定与坐标转换
6h
▼
- 相机畸变校正和坐标映射的基本概念
- 棋盘格标定板标定、九点标定、十二点标定
- 标定转换工具
- 单点抓取、单点纠偏、对位贴合具体实现及程序逻辑搭建
9. 条码与二维码读取识别
4h
▼
- 一维条码和二维码(QR、DataMatrix)识别的基本原理
- VM 条码识别工具进行多码并发检测和高速解码
10. OCR 字符识别与模型训练
4h
▼
- OCR(光学字符识别)的基本原理
- OCR 字符检测和识别工具
- 字符掩膜、段分割、字符字典管理