htuple类型的对象,把值赋给别的类型需要加.D(或者其他.I .S)强转,别的类型复制给他不需要
htuple hv_s
int a= (int)(hv_s.D);
hv_s=3;
HObject 类型变量传值不能释放内存,相当于引用传递,释放内存就没了,用完后再释放值
HTuple 类型即用即放,相当于值类型,不影响,也有引用类型,要注意
复杂的业务先在Bll层实现,再用UI层调用,类的对象创建在UI层就要传给BLL层,UI层用不到的就直接创建在BLL层,少一个参数传递
1、分层设计,先把各种dll库添加进来
2、写运动板卡类,把一些基本操作封装成方法,供mainfrom调用
3、写相机类,用反射切换相机,接口写相机的基础功能方法,实际相机类完善
4、打开窗口和显示图像写在图像处理类
5、写完运动控制,再写九点标定
图像处理类写九点标定提取九点像素(算法)
数学计算类写九点标定和保存矩阵
点的坐标存在实体类
6、再写贴合业务,(坐标位置放入新的实体类对象再把对象放入集合,一个产品一个对象)
在数学计算层写 读取九点标定矩阵,计算物料实际抓取点
在图像处理层写 提取物料像素点位置并显示轮廓(算法)
在BLL层调用上两个层的方法实现业务------验证矩阵是否读取成功,循环采图,提取像素点,转实际点,点位运动抓取
7、写点胶业务
图像处理 写获得运动轨迹参数-直线 圆(像素坐标)
数学计算 写得到轮廓的实际脉冲运动参数(实际坐标)
实体类新建二个存放像素和实际坐标(一个存放圆,一个存放直线)
BLL层调用图像处理和数学计算、实体类等等,实现业务,然后UI层调用BLL层
8、模板匹配找中心贴合业务
在haclon写好创建模板查找模板分别显示代码导入(把不同产品分类好),
创建模板:图像控件设置焦点 pb_ImageShow.Focus();//设置焦点
封装为两个方法在图像处理类,一个是画模板然后把区域存在本类全局变量(因为只有在这个类能用到),一个是生成模板,模板句柄(句柄,矩阵一般直接变量传输),显示轮廓
UI层调用,创建模板写画模板和生成模板,参数改变值事件写生成模板,
参数传递步骤:数据验证,数据封装,数据传递, 数据验证是对参数进行校验, 数据封装是把对应的参数传输到类的对象,数据传递把UI层修改后的参数通过类的对象传递到业务层实现
效果:点击模板划区域创建,调参数生成模板显示效果
查找模板:
图像处理类继续写:保存模型句柄方法,读入句柄方法,查找模板方法(不同产品像素参数放进不同类对象集合,后面就不用去判断,把集合当作参数传递)
数学计算层:写一个像素坐标转实际坐标方法,直接处理集合
BLL层业务实现:读标定矩阵,读模型,开线程循环(采图、显示、模板匹配得到像素、转实际、运动控制去走)
UI层调用业务层方法:数据验证,数据封装,数据传递