前言

为了开发人员观察墨水是怎么从工业打印机喷嘴喷出的,从而验证下载的波形数据是否正确。我们需要实现一套墨滴查看DropWatcher工具。
墨滴查看DropWatcher工具主要分为Pattern界面和Viewer界面两部分。Pattern界面主要是为了编辑每排喷嘴墨滴大小数据,并下载到头版中;Viewer界面主要是为了观察喷墨影像,及测量喷墨速度,从而验证喷墨数据是否正确。

Pattern界面实现

效果图呈现

墨滴查看工具

描述:

Pattern界面,实现的目的是:对喷头中的不同排喷嘴,进行大小点喷墨数据的编辑。
首先,选择某一排喷嘴后,进行2bit模式大小点数据编辑,并把编辑后的数据以csv格式存储;接着再进行CSV转码成Bin格式文件;最后需要把该Bin格式文件数据写入到头版中。

技术逻辑

数据的集合赋给控件的集合,需要集合的双向绑定实现。每排喷嘴对应的TextBox的text属性,包含到类里,此类需要继承 INotifyCollectionChanged 接口,每排喷嘴对应的输入框内容与数组类中的元素绑定。通过在选取喷嘴的输入框中,输入大中小点和不喷对应的状态值(3,2,1,0),默认采用2bit模式数据显示,来达到不同类型点的喷墨和观察。

对于喷嘴设置不同点滴大小类型的喷墨,有两种设置方式:

  1. Loop Expresion:表达式语法设置。
    勾选此选项,可随意指定范围内的喷嘴,显示大、中、小和不喷,四种状态。

输入格式举例:3,2,1[0-100]#1[101-200]#3[203]#3,2,1
#:间隔符;
3,2,1[0-100]: 从0到100喷嘴,设置为大点、中点和小点,依次循环喷射;
1[101-200]: 从101到200的喷嘴,均设置为小点喷射;
3[203]: 203这个喷嘴采用大点喷射;
3,2,1: 204至最后的喷嘴,设置为大点、中点和小点,依次循环该类型点大小喷墨。

  1. 手动喷嘴数据编辑
    可以手动编辑每个喷嘴对应的数据状态。

勾选此选项,需要点击当前喷头的类型。喷嘴输入框设置值为3,2,1,0(即喷嘴的大点、中点、小点或不喷状态)。嘴输入框是动态添加的。每一行喷嘴定为20个,行数是根据每排喷嘴数计算出来的。如:Gen5 有4排喷嘴,一排320个喷嘴,行数LineNum:320/20=16。

  • 在同一时刻只有一个Print Unit被观察到,一般情况下每个Print Uint对应一排喷嘴。通过下拉框点击选取每排喷嘴,喷头界面中选中的喷嘴排会绿色高亮显示,喷嘴输入框界面也会切换更新到选中排的喷嘴行。然后选取Print Unit中需要被观察的喷嘴,在选取喷嘴的输入框中,输入大中小点和不喷对应的状态值(3,2,1,0),来达到不同类型点的喷墨和观察。
  • 喷嘴输入框的编号获取:由编辑输入框的横坐标加上纵坐标所得。对GEN5 来说,每排的喷嘴编号是0~319。如下图所编辑的输入框喷嘴编号为:80 (横坐标号) + 10 (纵坐标号)= 90。输入值为:3,即90位置喷嘴设置为大点。

(2)DownLoad按钮功能:发送数据到头版中。

填充规则:

当对于Gen5喷头时,Unit16有16位,所以需要4个Gen5喷头,有4排喷头来进行填充数据。

  • 选择第一排时,即Line 1。Unit16中16位,需要在Unit16索引值为0位,4位,8位,12位进行填充相同的数据,其余为均为0;
    选择第二排时,即Line2。Unit16中16位,需要在Unit16索引值为1位,5位,9位,13位进行填充相同的数据,其余为均为0;
    选择第三排时,即Line3。Unit16中16位,需要在Unit16索引值为2位,6位,10位,14位进行填充相同的数据,其余为均为0;
    选择第四排时,即Line4。Unit16中16位,需要在Unit16索引值为3位,7位,11位,15位进行填充相同的数据,其余为均为0;
  • 对于不同数据状态的数据存放为:
    3(大点状态):11,(高位为1,低位为1);
    2(中点状态):10,(高位为1,低位为0);
    1(小点状态):01,(高位为0,低位为1);
    0(不喷状态):00,(高位为0,低位为0);
  • 当选择Line 1(第一行喷嘴),喷嘴中数据全设置为1时,数据处理逻辑图;
    墨滴查看工具

对于高位数据是 0000 0000 0000 0000 即Uint16值为0;
对于低位数据是0001 0001 0001 0001 即Uint16值为4369;
所以Uint16数组中数据为{0,4369,0,4369,0,4369,…}。
对于UI层数据存放在长度为320*2的Uint16的数组中,发送数据到C++中间层之前,需要先把Uint16的数组数据转成Byte数组。一个Byte是8位的,即Uint16需要两个Byte去存放数据。所以此时存放数据的Byte数组,长度为320 * 2 * 2 = 1280;
所以对于高位数据0000 0000 0000 0000,需要2个byte去存放,分别为0 ,0。低位数据0001 0001 0001 0001,需要2个byte去存放,分别为17,17。
所以Byte数组中数据为{0,0,17,17,0,0,17,17,0,0,17,17,…}。

  • 喷头正反装情况,数据存放规则
    喷头正装时,喷嘴索引为0的数据先从Unit16数组的首地址开始存放,索引值为0位存放高地址 0000 0000 0000 0000 即Uint16值为0;,索引值为1位存放低地址0001 0001 0001 0001 即Uint16值为4369;,然后依次循环存放。
    喷头反装时:喷嘴索引为0的数据先从Unit16数组的末尾地址去存放。假设Uint16数组的长度为N,索引值范围为0~(N-1)。所以末尾地址即(N-1)的地址放低位数据是 0000 0000 0000 0000 ,即Uint16值为0;前一位地址即(N-2)地址放高位数据0001 0001 0001 0001 即Uint16值为4369。

Viewer界面实现

描述

通过主板FPGA参数设置和墨滴喷射模式设置后,可以实时观测墨滴的喷射轨迹。从墨滴喷射的视频截图中,可以获取到墨滴的喷射速度。
点击“Video”按钮,观察模式会从视频到图片变化,然后“Viedo”按钮改变为“Picture”按钮。点击“Picture”按钮从这下降轨道截图,然后视频模式停止。再次点击“Video”返回视频模式。

TIS.Imaging.ICImagingControl 3.4 version开发的摄像头界面

墨滴查看工具

Drop设置:

  • Fire Frequency:设置喷头的喷火频率;

  • Mode:选择墨滴的喷射模式,这有三种喷射模式;

    • Continuous:喷头持续喷射墨水。
    • Count:喷头通过次数设置喷射墨水。
    • Time:喷头在设置“On” 的时间内喷射墨水,再设置“Off”的时间内不喷射墨水。
  • 操作

    • “start”按钮:喷头会通过以上选择的模式开始喷射墨水;
    • “stop”按钮,喷头会停止喷射;
    • “GetConfig”按钮:去获取当前主板FPGA设置的参数,在主板FPGA的设置下,这参数会显示在相应的输入框中。
    • Drop Speed Measurement:测量速度

详细的测量过程如下:

点击Start按钮,然后喷头开始喷射,相机开始工作。此时,这图片窗口是视频模式。
点击“Picture”按钮或者“Stop”按钮,从下落轨道中去截取一个图片。
点击两条绿线,然后向上或向下移动,直到它与垂直方向相邻的墨滴对齐。

测量原理

墨滴查看工具
图片窗口界面设置为600*600pix,对于Ricoh Gen4 和Gen5喷头,这相邻两排喷嘴的距离是0.00667英寸,假设如图两排喷嘴的长度为40pix,通过比例关系,我们就可以获得1Pix对应多少英寸,即1Pix对应多少米。然后只需测取垂直方向的长度(单位:Pix),来计算出真实垂直方向的距离(单位:米),通过频率我们可以得出相邻两次墨滴之间的时间,从而计算出喷嘴喷墨的速度(m/s)。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-30
  • 2021-05-13
  • 2021-07-13
  • 2021-06-30
  • 2022-01-21
猜你喜欢
  • 2021-12-22
  • 2022-02-20
  • 2021-10-04
  • 2022-12-23
  • 2021-10-09
  • 2021-10-27
  • 2021-06-17
相关资源
相似解决方案