Example #1
0
        private void Param_Update_From_Textbox()
        {
            //Target
            Target.double_X  = Convert.ToDouble(textBox_target_X.Text);
            Target.double_Y  = Convert.ToDouble(textBox_target_Y.Text);
            Target.double_Lv = Convert.ToDouble(textBox_target_Lv.Text);
            Target.String_Update_From_Double();

            //Measure
            Measure.double_X  = Convert.ToDouble(textBox_Measured_X.Text);
            Measure.double_Y  = Convert.ToDouble(textBox_Measured_Y.Text);
            Measure.double_Lv = Convert.ToDouble(textBox_Measured_Lv.Text);
            Measure.String_Update_From_Double();

            //Difference(Diff = Measure(F) - Target(T))
            Diff = Measure - Target;

            //Limit
            Limit.double_X  = Convert.ToDouble(this.textBox_Limit_X.Text);
            Limit.double_Y  = Convert.ToDouble(this.textBox_Limit_Y.Text);
            Limit.double_Lv = Convert.ToDouble(this.textBox_Limit_Lv.Text);
            Limit.String_Update_From_Double();

            //Gamma (Int Value)
            Gamma.int_R      = Convert.ToInt16(textBox_Gamma_R.Text);
            Gamma.int_G      = Convert.ToInt16(textBox_Gamma_G.Text);
            Gamma.int_B      = Convert.ToInt16(textBox_Gamma_B.Text);
            Prev_Gamma.int_R = Gamma.int_R;
            Prev_Gamma.int_G = Gamma.int_G;
            Prev_Gamma.int_B = Gamma.int_B;
        }
Example #2
0
        public bool Is_Mode2_OC_Skip_Within_UVL()
        {
            XYLv Mode1_Measured = dp150_dual_mornitoring().Get_OCMode1_Measure(gray);
            XYLv Mode2_Measured = dp150_dual_mornitoring().Get_OCMode2_Measure(gray);

            f1().GB_Status_AppendText_Nextline("OC_Mode1_Measured B" + band.ToString() + "/" + gray.ToString() + " X/Y/LV : " + Mode1_Measured.double_X + "/" + Mode1_Measured.double_Y + "/" + Mode1_Measured.double_Lv, Color.Blue);
            f1().GB_Status_AppendText_Nextline("OC_Mode2_Measured B" + band.ToString() + "/" + gray.ToString() + " X/Y/LV : " + Mode2_Measured.double_X + "/" + Mode2_Measured.double_Y + "/" + Mode2_Measured.double_Lv, Color.Blue);

            return(Is_Two_Measured_Are_Within_UVL_Spec(Mode1_Measured, Mode2_Measured));
        }
Example #3
0
        public XYLv Equal_Value(XYLv A)
        {
            //This = A
            this.double_X  = A.double_X;
            this.double_Y  = A.double_Y;
            this.double_Lv = A.double_Lv;

            //Update String
            this.String_Update_From_Double();

            return(this);
        }
Example #4
0
        //Diff_Gamma = Next_Gamma - Prev_Gamma
        private void Test_Gamma_RGB_Measurement_Changed(RGB Diff_Gamma, ref XYLv Measure)
        {
            // R 처리
            if (Diff_Gamma.int_R >= 1)
            {
                Measure.double_X  = Measure.double_X + 0.002 * Diff_Gamma.int_R;
                Measure.double_Y  = Measure.double_Y + 0.001 * Diff_Gamma.int_R;
                Measure.double_Lv = Measure.double_Lv + 1 * Diff_Gamma.int_R;
            }
            else if (Diff_Gamma.int_R <= -1)
            {
                Measure.double_X  = Measure.double_X - 0.002 * Math.Abs(Diff_Gamma.int_R);
                Measure.double_Y  = Measure.double_Y - 0.001 * Math.Abs(Diff_Gamma.int_R);
                Measure.double_Lv = Measure.double_Lv - 1 * Math.Abs(Diff_Gamma.int_R);
            }

            // G 처리
            if (Diff_Gamma.int_G >= 1)
            {
                Measure.double_X  = Measure.double_X + 0.001 * Diff_Gamma.int_G;
                Measure.double_Y  = Measure.double_Y + 0.002 * Diff_Gamma.int_G;
                Measure.double_Lv = Measure.double_Lv + 1.5 * Diff_Gamma.int_G;
            }
            else if (Diff_Gamma.int_G <= -1)
            {
                Measure.double_X  = Measure.double_X - 0.001 * Math.Abs(Diff_Gamma.int_G);
                Measure.double_Y  = Measure.double_Y - 0.002 * Math.Abs(Diff_Gamma.int_G);
                Measure.double_Lv = Measure.double_Lv - 1.5 * Math.Abs(Diff_Gamma.int_G);
            }

            // B 처리
            if (Diff_Gamma.int_B >= 1)
            {
                Measure.double_X  = Measure.double_X - 0.001 * Diff_Gamma.int_B;
                Measure.double_Y  = Measure.double_Y - 0.001 * Diff_Gamma.int_B;
                Measure.double_Lv = Measure.double_Lv + 0.5 * Diff_Gamma.int_B;
            }
            else if (Diff_Gamma.int_B <= -1)
            {
                Measure.double_X  = Measure.double_X + 0.001 * Math.Abs(Diff_Gamma.int_B);
                Measure.double_Y  = Measure.double_Y + 0.001 * Math.Abs(Diff_Gamma.int_B);
                Measure.double_Lv = Measure.double_Lv - 0.5 * Math.Abs(Diff_Gamma.int_B);
            }

            Measure_Textbox_update();

            //Diff Value/Textbox Update
            Diff = Measure - Target;
            DIff_Textbox_update();
        }
Example #5
0
        public static XYLv operator *(XYLv A, double ratio)
        {
            XYLv C = new XYLv();

            // C = A - B
            C.double_X  = A.double_X * ratio;
            C.double_Y  = A.double_Y * ratio;
            C.double_Lv = A.double_Lv * ratio;

            //Update String
            C.String_Update_From_Double();

            return(C);
        }
Example #6
0
        public static XYLv operator -(XYLv A, XYLv B)
        {
            XYLv C = new XYLv();

            // C = A - B
            C.double_X  = A.double_X - B.double_X;
            C.double_Y  = A.double_Y - B.double_Y;
            C.double_Lv = A.double_Lv - B.double_Lv;

            //Update String
            C.String_Update_From_Double();

            return(C);
        }
Example #7
0
        private bool Is_Two_Measured_Are_Within_UVL_Spec(XYLv Mode1_Measured, XYLv Mode2_or_Mode3_Measured)
        {
            double Diff_Delta_L_Spec = dp150_form().OC_Mode2_Diff_Delta_L_Spec[band, gray];
            double UV_Distance_Limit = dp150_form().OC_Mode2_Diff_Delta_UV_Spec[band, gray];

            bool Delta_L_Spec_In  = Compare_Delta_L(Mode1_Measured, Mode2_or_Mode3_Measured, Diff_Delta_L_Spec);
            bool Delta_UV_Spec_In = Compare_Delta_UV(Mode1_Measured, Mode2_or_Mode3_Measured, UV_Distance_Limit);

            if (Delta_L_Spec_In && Delta_UV_Spec_In)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #8
0
        private bool Compare_Delta_UV(XYLv Mode1_Measured, XYLv Mode2_or_Mode3_Measured, double UV_Distance_Limit)
        {
            double UV_Distance = Color_Coordinate.Get_UV_Distance_From_XY(Mode1_Measured.double_X, Mode1_Measured.double_Y, Mode2_or_Mode3_Measured.double_X, Mode2_or_Mode3_Measured.double_Y);
            bool   UV_Spec_In;

            if (UV_Distance < UV_Distance_Limit)
            {
                UV_Spec_In = true;
                f1().GB_Status_AppendText_Nextline("UV_Distance(" + UV_Distance.ToString() + ") < UV_Distance_Limit(" + UV_Distance_Limit.ToString() + "), UV_Spec_In = true)", Color.Green);
            }
            else
            {
                UV_Spec_In = false;
                f1().GB_Status_AppendText_Nextline("UV_Distance(" + UV_Distance.ToString() + ") >= UV_Distance_Limit(" + UV_Distance_Limit.ToString() + "), UV_Spec_In = false)", Color.Red);
            }

            return(UV_Spec_In);
        }
Example #9
0
        private bool Compare_Delta_L(XYLv Mode1_Measured, XYLv Mode2_or_Mode3_Measured, double Diff_Delta_L_Spec)
        {
            Form1  f1 = (Form1)Application.OpenForms["Form1"];
            double Diff_Measured_Lv = Mode1_Measured.double_Lv - Mode2_or_Mode3_Measured.double_Lv;
            double Delta_L          = Math.Abs(Diff_Measured_Lv / (Mode1_Measured.double_Lv));

            bool Delta_L_Spec_In;

            if (Delta_L < Diff_Delta_L_Spec)
            {
                Delta_L_Spec_In = true;
                f1.GB_Status_AppendText_Nextline("Delta_L(" + Delta_L.ToString() + ") < Diff_Delta_L_Spec(" + Diff_Delta_L_Spec.ToString() + "), Delta_L_Spec_In = true)", Color.Green);
            }
            else
            {
                Delta_L_Spec_In = false;
                f1.GB_Status_AppendText_Nextline("Delta_L(" + Delta_L.ToString() + ") >= Diff_Delta_L_Spec(" + Diff_Delta_L_Spec.ToString() + "), Delta_L_Spec_In = false)", Color.Red);
            }

            return(Delta_L_Spec_In);
        }
Example #10
0
        public EA9155(OC_Mode mode)
        {
            DP213_Model_Option_Form model_option_form = (DP213_Model_Option_Form)Application.OpenForms["DP213_Model_Option_Form"];

            All_band_gray_Gamma = new RGB[14, 8]; //14ea Bands , 8ea Gray-points

            band                     = 0;
            gray                     = 0;
            loop_count               = 0;
            Vreg1_loop_count         = 0;
            this.loop_count_max      = model_option_form.Get_Max_Loop_Count();
            total_average_loop_count = 0;
            Initial_Vreg1            = 0;
            this.Skip_Lv             = model_option_form.Get_Skip_Lv();
            Prev_Band_Gray255_Gamma  = new RGB();

            Update_SET1_HBM_AM0_Hex();
            Update_SET1_HBM_AM1_Hex();

            //Onlt For Single Mode
            Gamma_Init     = new RGB();
            Cal_Gamma_Init = new RGB();

            //----they were global variables before---
            //Compensation related(RGB)
            Gamma      = new RGB();
            Measure    = new XYLv();
            Target     = new XYLv();
            Limit      = new XYLv();
            Extension  = new XYLv();
            Prev_Gamma = new RGB();

            //Vreg1 related
            Vreg1_Need_To_Be_Updated = false;
            Vreg1                  = 0;
            Diff_Vreg1             = 0;
            Prev_Vreg1             = 0;
            Vreg1_First_Gamma_Red  = 0;
            Vreg1_First_Gamma_Blue = 0;

            G255_First_Gamma_Red   = 0;
            G255_First_Gamma_Green = 0;
            G255_First_Gamma_Blue  = 0;

            //RGB Infinite_Loop_Detect
            Infinite       = false;
            Infinite_Count = 0;
            Temp_Gamma     = new RGB[6]; //A0,A1,A2,A3,A4,A5
            Diif_Gamma     = new RGB[5]; //(A1-A0),(A2-A1),(A3-A2),(A4-A3),(A5-A4)
            Temp           = new RGB();

            //RB Vreg1_Infinite_Loop_Detect
            Vreg1_Infinite       = false;
            Vreg1_Infinite_Count = 0;
            Vreg1_Value          = new int[3];
            Vreg1_Value_Temp     = 0;
            Vreg1_Temp_Gamma     = new RGB[4]; //A0,A1,A2,A3
            Vreg1_Diif_Gamma     = new RGB[3]; //(A1-A0),(A2-A1),(A3-A2)
            Vreg1_Temp           = new RGB();

            //dll-related variables
            Gamma_Out_Of_Register_Limit = false;
            Within_Spec_Limit           = false;

            Gamma_Register_Limit = 511;
            Vreg1_Register_Limit = 2047;

            oc_mode = mode;
        }