DropWatcher墨滴查看工具
前言
为了开发人员观察墨水是怎么从工业打印机喷嘴喷出的,从而验证下载的波形数据是否正确。我们需要实现一套墨滴查看DropWatcher工具。
墨滴查看DropWatcher工具主要分为Pattern界面和Viewer界面两部分。Pattern界面主要是为了编辑每排喷嘴墨滴大小数据,并下载到头版中;Viewer界面主要是为了观察喷墨影像,及测量喷墨速度,从而验证喷墨数据是否正确。
Pattern界面实现
效果图呈现
描述:
Pattern界面,实现的目的是:对喷头中的不同排喷嘴,进行大小点喷墨数据的编辑。
首先,选择某一排喷嘴后,进行2bit模式大小点数据编辑,并把编辑后的数据以csv格式存储;接着再进行CSV转码成Bin格式文件;最后需要把该Bin格式文件数据写入到头版中。
技术逻辑
数据的集合赋给控件的集合,需要集合的双向绑定实现。每排喷嘴对应的TextBox的text属性,包含到类里,此类需要继承 INotifyCollectionChanged 接口,每排喷嘴对应的输入框内容与数组类中的元素绑定。通过在选取喷嘴的输入框中,输入大中小点和不喷对应的状态值(3,2,1,0),默认采用2bit模式数据显示,来达到不同类型点的喷墨和观察。
对于喷嘴设置不同点滴大小类型的喷墨,有两种设置方式:
- 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至最后的喷嘴,设置为大点、中点和小点,依次循环该类型点大小喷墨。
-
手动喷嘴数据编辑
可以手动编辑每个喷嘴对应的数据状态。
勾选此选项,需要点击当前喷头的类型。喷嘴输入框设置值为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)。