一、需求:
机器需要一个功能,将标签贴在标签位置上
一个载具上有五个标签位,每个标签位只在Y轴间隔相同距离
相机只在第一个标签位才拍照,之后四个标签位根据第一个标签位的图像进行修正XYR后
直接移动Y轴距离就可以进行后四个标签位贴标了
节省了工时并提高了效率
等到下一个载具时,在第一个标签位才进行拍照
二、上下相机
下相机拍摄标签
上相机拍摄标签位
下相机:标签每个都需要拍照,每次拍照都与基准点做比较,进行标签自身的修正
上相机:第一标签位才拍照,标签位与基准点做比较,进行标签位的修正
而后的四个标签位,标签位的修正是不会改变的,会改变的只有对标签的修正
一般载具都是固定死的,标签位是无法修正的,所以依旧对标签的修正
三、只讲解上相机的这个功能如何使用
(1)产品:
使用的海康Vision Master 4.2.0
(2)流程:
(3)分析:
接收数据是接收来自上位机的数据
约定好一个地址,如D100
当地址里数值是1000,则为更新拍照;当地址里数值是2000,则为使用上一张拍照的图像
协议解析是对接收的数据进行解析
上位机发送的数据是16进制组装结果,需要对其进行解析才能读到1000或者2000
最为重要的是脚本里的内容
(4)代码分析:
1、定义两个保存图像的变量
ImageData image;
ImageData imageSecond;
2、将输入的图像保存到image变量中
GetImageValue ("inImage",ref image);
3、将image的变量的图像,再放到imageSecond变量中
imageSecond =image;
4、将变量中的图像保存到输出的图像
SetImageValue ("outImage",image);
SetImageValue ("outImage",imageSecond);
5、当发送1000的时候,将输入的图像保存到image,并image的图像保存到imageSecond,输出的图像为image
6、当发送2000的时候,输出的图像为imageSecond
(5)绑定:
输入的图像类型是IMAGE,绑定的是图像源图像
输入的判断值,绑定的是解析协议的out0
输出的图像类型是IMAGE
四、注意要点
当你手动去拍照的时候,需要将之后的流程改变成图像源图像,否则无法更新图像
只有跑自动的时候才使用脚本3.outImage
而且标定转换也需要和上图进行同步绑定
比如当,几何变化绑定的是图像源图像,那你的标定转换也需要更换成图像源图像
而当几何变化绑定的是脚本3.outImage时,标定转换也需要更换成脚本3.outImage
脚本的代码:
using System;
using System.Text;
using System.Windows.Forms;
using Script.Methods;
public partial class UserScript:ScriptMethods,IProcessMethods
{
//the count of process
//执行次数计数
int processCount ;
ImageData image;
ImageData imageSecond;
/// <summary>
/// Initialize the field's value when compiling
/// 预编译时变量初始化
/// </summary>
public void Init()
{
//You can add other global fields here
//变量初始化,其余变量可在该函数中添加
processCount = 0;
}
/// <summary>
/// Enter the process function when running code once
/// 流程执行一次进入Process函数
/// </summary>
/// <returns></returns>
public bool Process()
{
//You can add your codes here, for realizing your desired function
//每次执行将进入该函数,此处添加所需的逻辑流程处理
GetImageValue ("inImage",ref image);
if( in0 == 1000 )
{
SetImageValue ("outImage",image);
imageSecond =image;
}
else
{
SetImageValue ("outImage",imageSecond);
}
return true;
}
}