软件开发 : ui层,业务逻辑层,数据层
一.halcon助手
1.循环采集
2.定时器(a.windows自带的控件定时器(不准,有误差);b.Timer类;c.线程技术(C#机制里面,有托管,委托,包括反射等机制))
3.多线程
4.回调函数(操作系统去调用的应用程序只是把回调函数的地址注册给操作系统,由操作系统来调用,当有一帧数据来了之后,就进入回调函数)
常用的采集有
软触发:相当于消息,内部给触发 a.set 触发模式 b.按钮等触发,进入软触发函数,MrApi:CameraSoftTrigger(m_hCamera)句柄区分不同相机
硬触发 :外界给信号。由电平电压等触发(触发时间可能过长,需提前触发,卡尔曼滤波预测)
自动连续采集
采集发生错误 接口库,驱动是否正常,相机是否被占用
a.定时器延时长一点 Image采集助手,参数设置(抓取延时等) b.图片显示不全时,加上dev_set_part(0,0,Height,Width)
二.SDK(软件开发包)采集 进行相机,控制板卡等的应用,先看开发手册(快速开发指南) sdk .h .lib .dll(动态链接库) 驱动文件 .sys .inf
基本流程如下:
1.初始化相机 2.枚举设备 3.注册回调 4.play(采集) 5.定义回调函数
配置 C#调用Halcon动态链接库,配置SDK的dll库(项目添加引用)
C#调用C++ C#有时候特别是在运动控制这里,满足不了实时性的时候,用库集成起来 用C++写一个库,然后用C#去调用。*
[DllImport(“MVCAMSDK.dll”)] 引入C++库
Puplic static extern CameraSdkStatus(CameraHandle hCamera, ref int piHoff, ref int piVoff,ref int piWidth,ref int piHeight); //暴露库中接口函数
//添加引用
using MVSDK; //使用SDK接口
using MvApi = MVSDK.MvApi;
using HalconDotNet;
//关闭相机
HOperatorSet.CloseFramegrabber(hv_AcqHandle);
ho_image.Dispose();