Esempio n. 1
0
        public void Update_Calculated_Vdata(DP173_or_Elgin model, Gamma_Set Set)
        {
            DP173_Model_Option_Form DP173 = (DP173_Model_Option_Form)Application.OpenForms["DP173_Model_Option_Form"];

            RGB_Double[,] Temp_Calculated_Vdata = Get_Calculated_Vdata(Set);
            double[] Temp_Calculated_Vreg1_Voltage = Get_Calculated_Vreg1_Voltage(Set);

            //-------------Added on 200316-----------
            if (model.band < 11)
            {
                //update Vreg1 , R/G/B AM2 Voltage
                if (model.gray == 0)
                {
                    int Dec_Vreg1 = DP173.DP173_Get_Normal_Initial_Vreg1(model.band, Set);//Current_Band Vreg1
                    Temp_Calculated_Vreg1_Voltage[model.band] = Imported_my_cpp_dll.DP173_Get_Vreg1_Voltage(Dec_Vreg1, DP173.Voltage_VREG1_REF2047, DP173.Voltage_VREG1_REF1635, DP173.Voltage_VREG1_REF1227, DP173.Voltage_VREG1_REF815, DP173.Voltage_VREG1_REF407, DP173.Voltage_VREG1_REF63, DP173.Voltage_VREG1_REF1);
                    Temp_Calculated_Vdata[model.band, model.gray].double_R = Imported_my_cpp_dll.DP173_Get_AM2_Gamma_Voltage(DP173.Voltage_VREG1_REF2047, Temp_Calculated_Vreg1_Voltage[model.band], model.Gamma.int_R);
                    Temp_Calculated_Vdata[model.band, model.gray].double_G = Imported_my_cpp_dll.DP173_Get_AM2_Gamma_Voltage(DP173.Voltage_VREG1_REF2047, Temp_Calculated_Vreg1_Voltage[model.band], model.Gamma.int_G);
                    Temp_Calculated_Vdata[model.band, model.gray].double_B = Imported_my_cpp_dll.DP173_Get_AM2_Gamma_Voltage(DP173.Voltage_VREG1_REF2047, Temp_Calculated_Vreg1_Voltage[model.band], model.Gamma.int_B);
                }
                //update R/G/B Normal Voltage
                else
                {
                    Temp_Calculated_Vdata[model.band, model.gray].double_R = Imported_my_cpp_dll.DP173_Get_GR_Gamma_Voltage(DP173.Voltage_VREG1_REF2047, Temp_Calculated_Vreg1_Voltage[model.band], model.R_AM1_Dec, Temp_Calculated_Vdata[model.band, (model.gray - 1)].double_R, model.Gamma.int_R, model.gray);
                    Temp_Calculated_Vdata[model.band, model.gray].double_G = Imported_my_cpp_dll.DP173_Get_GR_Gamma_Voltage(DP173.Voltage_VREG1_REF2047, Temp_Calculated_Vreg1_Voltage[model.band], model.G_AM1_Dec, Temp_Calculated_Vdata[model.band, (model.gray - 1)].double_G, model.Gamma.int_G, model.gray);
                    Temp_Calculated_Vdata[model.band, model.gray].double_B = Imported_my_cpp_dll.DP173_Get_GR_Gamma_Voltage(DP173.Voltage_VREG1_REF2047, Temp_Calculated_Vreg1_Voltage[model.band], model.B_AM1_Dec, Temp_Calculated_Vdata[model.band, (model.gray - 1)].double_B, model.Gamma.int_B, model.gray);
                }
            }
            //---------------------------------------
        }
Esempio n. 2
0
        public RGB AM1_Convert_Voltgae_to_Dec(Gamma_Set Set, int band, RGB_Double AM1_Voltage)
        {
            RGB AM1_Dec = new RGB();

            AM1_Dec.int_R = Imported_my_cpp_dll.DP213_Get_AM1_RGB_Dec(Get_Voltage_VREF4095(), Get_Normal_Voltage_Vreg1(Set, band), AM1_Voltage.double_R);
            AM1_Dec.int_G = Imported_my_cpp_dll.DP213_Get_AM1_RGB_Dec(Get_Voltage_VREF4095(), Get_Normal_Voltage_Vreg1(Set, band), AM1_Voltage.double_G);
            AM1_Dec.int_B = Imported_my_cpp_dll.DP213_Get_AM1_RGB_Dec(Get_Voltage_VREF4095(), Get_Normal_Voltage_Vreg1(Set, band), AM1_Voltage.double_B);

            if (AM1_Dec.int_R > DP213_Static.AM1_AM0_Max)
            {
                AM1_Dec.int_R = DP213_Static.AM1_AM0_Max;
            }
            if (AM1_Dec.int_G > DP213_Static.AM1_AM0_Max)
            {
                AM1_Dec.int_G = DP213_Static.AM1_AM0_Max;
            }
            if (AM1_Dec.int_B > DP213_Static.AM1_AM0_Max)
            {
                AM1_Dec.int_B = DP213_Static.AM1_AM0_Max;
            }
            if (AM1_Dec.int_R < 0)
            {
                AM1_Dec.int_R = 0;
            }
            if (AM1_Dec.int_G < 0)
            {
                AM1_Dec.int_G = 0;
            }
            if (AM1_Dec.int_B < 0)
            {
                AM1_Dec.int_B = 0;
            }

            return(AM1_Dec);
        }
Esempio n. 3
0
        protected bool Get_Initial_RVreg1B_Using_LUT_MCI(Gamma_Set Set, int band, OC_Mode Mode)
        {
            if ((band >= 1) && (band <= DP213_Static.Max_HBM_and_Normal_Band_Amount) && (vars.Target.double_Lv > Algorism_Lower_Skip_LV) && (vars.Target.double_Lv < Algorism_Upper_Skip_LV))
            {
                f1().GB_Status_AppendText_Nextline("Before) R/G/B/Vreg1 = " + vars.Gamma.int_R.ToString() + "/" + vars.Gamma.int_G.ToString().ToString() + "/" + vars.Gamma.int_B.ToString() + "/" + vars.Vreg1, Color.Blue);

                int        gray = 0;
                RGB_Double Gray = DP213_Main_OC_Flow.init_gray_lut.Get_LUT_RGB(band, gray, Mode);

                RGB_Double Gamma_Voltage = new RGB_Double();
                Gamma_Voltage.double_R = InterpolationFomulaFactory.GetPrevBand_Red_Volatge(Gray.double_R);
                Gamma_Voltage.double_G = InterpolationFomulaFactory.GetPrevBand_Green_Volatge(Gray.double_G);
                Gamma_Voltage.double_B = InterpolationFomulaFactory.GetPrevBand_Blue_Volatge(Gray.double_B);

                double Voltage_VREF0    = storage.Get_Voltage_VREF0();
                double Voltage_VREF4095 = storage.Get_Voltage_VREF4095();
                double Vreg1_voltage    = Voltage_VREF4095 + ((Gamma_Voltage.double_G - Voltage_VREF4095) * (900.0 / (storage.Get_All_band_gray_Gamma(Set, (band - 1), gray).int_G + 389.0))); //just use HBM_Gamma[0], because other normal band copy G255 R/G/B From HBM

                vars.Vreg1       = Imported_my_cpp_dll.DP213_Get_Vreg1_Dec(Voltage_VREF4095, Voltage_VREF0, Vreg1_voltage);
                vars.Gamma.int_R = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Dec(Voltage_VREF4095, Vreg1_voltage, Gamma_Voltage.double_R);
                vars.Gamma.int_B = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Dec(Voltage_VREF4095, Vreg1_voltage, Gamma_Voltage.double_B);

                f1().GB_Status_AppendText_Nextline("After C++) R/G/B/Vreg1 = " + vars.Gamma.int_R.ToString() + "/" + vars.Gamma.int_G.ToString().ToString() + "/" + vars.Gamma.int_B.ToString() + "/" + vars.Vreg1, Color.Red);
                init_algorithm_storage_cpp.Set_All_band_gray_Gamma(Set, band, gray, vars.Gamma);

                return(true);
            }
            else
            {
                f1().GB_Status_AppendText_Nextline("Skip)Get_Initial_RVreg1B_Using_LUT_MCI()", Color.DarkRed);
                return(false);
            }
        }
Esempio n. 4
0
        public RGB_Double Get_Band_Set_Voltage_AM0(Gamma_Set Set, int band)
        {
            int Set_Index = Convert.ToInt16(Set);

            Voltage_AM0[Set_Index, band].double_R = Imported_my_cpp_dll.DP213_Get_AM0_RGB_Voltage(Get_Voltage_VREF4095(), Get_Normal_Voltage_Vreg1(Set, band), Get_Band_Set_AM0(Set, band).int_R);
            Voltage_AM0[Set_Index, band].double_G = Imported_my_cpp_dll.DP213_Get_AM0_RGB_Voltage(Get_Voltage_VREF4095(), Get_Normal_Voltage_Vreg1(Set, band), Get_Band_Set_AM0(Set, band).int_G);
            Voltage_AM0[Set_Index, band].double_B = Imported_my_cpp_dll.DP213_Get_AM0_RGB_Voltage(Get_Voltage_VREF4095(), Get_Normal_Voltage_Vreg1(Set, band), Get_Band_Set_AM0(Set, band).int_B);
            return(Voltage_AM0[Set_Index, band]);
        }
Esempio n. 5
0
        public void Set_and_Send_VREF0(double New_VREF0_Voltage)
        {
            ocparam.Set_Normal_REF0(Convert.ToByte(Imported_my_cpp_dll.DP213_VREF0_Voltage_to_Dec(New_VREF0_Voltage)));

            api.WriteLine("New VREF0 :" + ocparam.Get_Normal_REF0());

            byte[][] Output_CMD = ModelFactory.Get_DP213_Instance().Get_REF4095_REF0_CMD(ocparam.Get_Normal_REF4095(), ocparam.Get_Normal_REF0());
            cmd.SendMipiCMD(Output_CMD);
        }
Esempio n. 6
0
        public void Set_OC_Mode_Vreg1(int Vreg1, OC_Mode mode, int band)
        {
            dprotocal.api.WriteLine($"[Mode{mode}/Band{band}] Vreg1 : {Vreg1}", Color.Purple);

            int[]    OCMode_Vreg1         = Get_OC_Mode_Vreg1(mode);
            double[] OCMode_Vreg1_Voltage = Get_OC_Mode_Vreg1_Voltage(mode);
            OCMode_Vreg1[band]         = Vreg1;
            OCMode_Vreg1_Voltage[band] = Imported_my_cpp_dll.DP213_Get_Vreg1_Voltage(ref0ref4095.Get_Normal_REF4095_Voltage(), ref0ref4095.Get_Normal_REF0_Voltage(), Vreg1);
        }
Esempio n. 7
0
        private void Sub_ELVSS_and_Vinit2_Compensation(OC_Mode mode, int band, double ELVSS_Voltage_Max, double ELVSS_Voltage_Min)
        {
            if (vars.Optic_Compensation_Stop == false)
            {
                double[] First_Five_Lv       = new double[5];
                double   Found_ELVSS_Voltage = Double.MinValue;

                List <double> ELVSS_list = new List <double>();
                List <double> Lv_list    = new List <double>();

                int index = 0;
                for (double elvss_voltage = elvss_oc_obj.Get_First_ELVSS_Voltage(); elvss_voltage < elvss_oc_obj.Get_Last_ELVSS_Voltage(); elvss_voltage += elvss_oc_obj.ELVSS_Minimum_Step())
                {
                    Set_and_Send_ELVSS_CMD(mode, band, Imported_my_cpp_dll.DP213_ELVSS_Voltage_to_Dec(elvss_voltage));
                    Thread.Sleep(20);
                    ELVSS_list.Add(elvss_voltage);

                    XYLv[] MultiMeasured = Get_Multitimes_Measured_Values(how_many_times: 5);
                    double final_lv      = elvss_oc_obj.Get_Average_XYLv_After_Remove_Min_Max(MultiMeasured).double_Lv;
                    Lv_list.Add(final_lv);
                    api.WriteLine(index + ")elvss_voltage :" + elvss_voltage);


                    if (index < 5)
                    {
                        First_Five_Lv[index] = final_lv;
                        api.WriteLine(index + ") First_Five_Lv[index] :" + First_Five_Lv[index]);
                    }
                    else if (Math.Round(elvss_voltage - (elvss_oc_obj.Get_ELVSSArrayLength() - 2) * 0.1, 1) >= ELVSS_Voltage_Min)
                    {
                        api.WriteLine("elvss_voltage / ELVSS_Voltage_Min : " + elvss_voltage + " / " + ELVSS_Voltage_Min);
                        api.WriteLine(Math.Round((elvss_voltage - (elvss_oc_obj.Get_ELVSSArrayLength() - 2) * 0.1), 1) + " >= " + ELVSS_Voltage_Min);
                        double[] ELVSS;
                        double[] Lv;
                        Update_ELVSS_LV_Array(out ELVSS, out Lv, ELVSS_list, Lv_list);

                        for (int k = 0; k < ELVSS.Length; k++)
                        {
                            api.WriteLine(ELVSS[k] + " / " + Lv[k]);
                        }

                        Found_ELVSS_Voltage = elvss_oc_obj.FindELVSS(First_Five_Lv, ELVSS, Lv);
                        api.WriteLine("Found_ELVSS_Voltage / ELVSS_Voltage_Max :  " + Found_ELVSS_Voltage + " / " + ELVSS_Voltage_Max);
                        api.WriteLine("elvss_compensation_obj.Is_ELVSS_Found() : " + elvss_oc_obj.Is_ELVSS_Found());

                        if (elvss_oc_obj.Is_ELVSS_Found() || Found_ELVSS_Voltage >= ELVSS_Voltage_Max)
                        {
                            break;
                        }
                    }
                    index++;
                }
                Set_and_Send_ELVSS_and_Vinit2(Found_ELVSS_Voltage);
                Set_and_Send_Cold_ELVSS_and_Vinit2();
            }
        }
Esempio n. 8
0
        private void RGBOpticCompensation(ref RGB Gamma, OC_Mode mode, int band, int gray)
        {
            XYLv Measured    = ocparam.Get_OC_Mode_Measure(mode, band, gray);
            XYLv Target      = ocparam.Get_OC_Mode_Target(mode, band, gray);
            XYLv Limit       = ocparam.Get_OC_Mode_Limit(mode, band, gray);
            XYLv ExtensionXY = ocparam.Get_OC_Mode_ExtensionXY(mode, band, gray);
            int  loopCount   = ocparam.Get_OC_Mode_LoopCount(mode, band, gray);

            vars.Check_InfiniteLoop(loopCount, Gamma);
            Imported_my_cpp_dll.Sub_Compensation(loopCount, vars.IsInfiniteLoop, ref vars.InfiniteLoopCount, ref Gamma.int_R, ref Gamma.int_G, ref Gamma.int_B, Measured.double_X, Measured.double_Y, Measured.double_Lv, Target.double_X, Target.double_Y, Target.double_Lv, Limit.double_X, Limit.double_Y, Limit.double_Lv, ExtensionXY.double_X, ExtensionXY.double_Y, DP213_Static.Gamma_Register_Max, ref vars.Gamma_Out_Of_Register_Limit, ref vars.Within_Spec_Limit);
        }
Esempio n. 9
0
        public double Get_OC_Mode_Vreg1_Voltage(OC_Mode mode, int band)
        {
            if (band > DP213_Static.Max_HBM_and_Normal_Band_Amount)
            {
                throw new Exception("band should be less than " + DP213_Static.Max_HBM_and_Normal_Band_Amount);
            }

            int[]    OCMode_Vreg1         = Get_OC_Mode_Vreg1(mode);
            double[] OCMode_Vreg1_Voltage = Get_OC_Mode_Vreg1_Voltage(mode);
            OCMode_Vreg1_Voltage[band] = Imported_my_cpp_dll.DP213_Get_Vreg1_Voltage(ref0ref4095.Get_Normal_REF4095_Voltage(), ref0ref4095.Get_Normal_REF0_Voltage(), OCMode_Vreg1[band]);
            return(OCMode_Vreg1_Voltage[band]);
        }
Esempio n. 10
0
        public void Set_Band_Set_AM0(Gamma_Set Set, int band, RGB New_AM0)
        {
            if (band < DP213_Static.Max_HBM_and_Normal_Band_Amount)
            {
                int Set_Index = Convert.ToInt16(Set);
                AM0[Set_Index, band] = New_AM0;

                Voltage_AM0[Set_Index, band].double_R = Imported_my_cpp_dll.DP213_Get_AM0_RGB_Voltage(Get_Voltage_VREF4095(), Get_Normal_Voltage_Vreg1(Set, band), Get_Band_Set_AM0(Set, band).int_R);
                Voltage_AM0[Set_Index, band].double_G = Imported_my_cpp_dll.DP213_Get_AM0_RGB_Voltage(Get_Voltage_VREF4095(), Get_Normal_Voltage_Vreg1(Set, band), Get_Band_Set_AM0(Set, band).int_G);
                Voltage_AM0[Set_Index, band].double_B = Imported_my_cpp_dll.DP213_Get_AM0_RGB_Voltage(Get_Voltage_VREF4095(), Get_Normal_Voltage_Vreg1(Set, band), Get_Band_Set_AM0(Set, band).int_B);
            }
        }
Esempio n. 11
0
        private void RVreg1BOpticCompensation(ref RGB Gamma, ref int vreg1, OC_Mode mode, int band, int gray)
        {
            XYLv Measured    = ocparam.Get_OC_Mode_Measure(mode, band, gray);
            XYLv Target      = ocparam.Get_OC_Mode_Target(mode, band, gray);
            XYLv Limit       = ocparam.Get_OC_Mode_Limit(mode, band, gray);
            XYLv ExtensionXY = ocparam.Get_OC_Mode_ExtensionXY(mode, band, gray);
            int  loopCount   = ocparam.Get_OC_Mode_LoopCount(mode, band, gray);

            Imported_my_cpp_dll.Vreg1_Compensation(loopCount, Vreg1_Infinite_Loop: false, Vreg1_Infinite_Loop_Count: 0, ref Gamma.int_R, ref vreg1, ref Gamma.int_B, Measured.double_X, Measured.double_Y, Measured.double_Lv,
                                                   Target.double_X, Target.double_Y, Target.double_Lv, Limit.double_X, Limit.double_Y, Limit.double_Lv, ExtensionXY.double_X, ExtensionXY.double_Y, DP213_Static.Gamma_Register_Max,
                                                   DP213_Static.Vreg1_Register_Max, ref vars.Gamma_Out_Of_Register_Limit, ref vars.Within_Spec_Limit);
        }
Esempio n. 12
0
        protected bool Get_Initial_RGB_Using_LUT_MCI(Gamma_Set Set, int band, int gray, OC_Mode Mode)
        {
            if ((band >= 1) && (band <= DP213_Static.Max_HBM_and_Normal_Band_Amount) && (vars.Target.double_Lv > Algorism_Lower_Skip_LV) && (vars.Target.double_Lv < Algorism_Upper_Skip_LV))
            {
                RGB_Double Gray = DP213_Main_OC_Flow.init_gray_lut.Get_LUT_RGB(band, gray, Mode);

                RGB_Double Gamma_Voltage = new RGB_Double();
                Gamma_Voltage.double_R = InterpolationFomulaFactory.GetPrevBand_Red_Volatge(Gray.double_R);
                Gamma_Voltage.double_G = InterpolationFomulaFactory.GetPrevBand_Green_Volatge(Gray.double_G);
                Gamma_Voltage.double_B = InterpolationFomulaFactory.GetPrevBand_Blue_Volatge(Gray.double_B);


                f1().GB_Status_AppendText_Nextline("Before) R/G/B/Vreg1 = " + vars.Gamma.int_R.ToString() + "/" + vars.Gamma.int_G.ToString().ToString() + "/" + vars.Gamma.int_B.ToString() + "/" + vars.Vreg1, Color.Blue);

                if (gray == 0)
                {
                    double Voltage_VREF4095 = storage.Get_Voltage_VREF4095();
                    double Vreg1_Voltage    = storage.Get_Normal_Voltage_Vreg1(Set, band);

                    vars.Gamma.int_R = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Dec(Voltage_VREF4095, Vreg1_Voltage, Gamma_Voltage.double_R);
                    vars.Gamma.int_G = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Dec(Voltage_VREF4095, Vreg1_Voltage, Gamma_Voltage.double_G);
                    vars.Gamma.int_B = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Dec(Voltage_VREF4095, Vreg1_Voltage, Gamma_Voltage.double_B);
                }
                else
                {
                    RGB_Double AM1_Voltage = storage.Get_Band_Set_Voltage_AM1(Set, band);

                    RGB_Double Prvious_Gray_Gamma_Voltage;
                    if (gray == 4 || gray == 6 || gray == 8)
                    {
                        Prvious_Gray_Gamma_Voltage = storage.Get_Voltage_All_band_gray_Gamma(Set, band, (gray - 2));
                    }
                    else
                    {
                        Prvious_Gray_Gamma_Voltage = storage.Get_Voltage_All_band_gray_Gamma(Set, band, (gray - 1));
                    }

                    vars.Gamma.int_R = Imported_my_cpp_dll.DP213_Get_GR_Gamma_Dec(AM1_Voltage.double_R, Prvious_Gray_Gamma_Voltage.double_R, Gamma_Voltage.double_R, gray);
                    vars.Gamma.int_G = Imported_my_cpp_dll.DP213_Get_GR_Gamma_Dec(AM1_Voltage.double_G, Prvious_Gray_Gamma_Voltage.double_G, Gamma_Voltage.double_G, gray);
                    vars.Gamma.int_B = Imported_my_cpp_dll.DP213_Get_GR_Gamma_Dec(AM1_Voltage.double_B, Prvious_Gray_Gamma_Voltage.double_B, Gamma_Voltage.double_B, gray);
                }

                f1().GB_Status_AppendText_Nextline("After C++) R/G/B/Vreg1 = " + vars.Gamma.int_R.ToString() + "/" + vars.Gamma.int_G.ToString().ToString() + "/" + vars.Gamma.int_B.ToString() + "/" + vars.Vreg1, Color.Red);
                init_algorithm_storage_cpp.Set_All_band_gray_Gamma(Set, band, gray, vars.Gamma);
                return(true);
            }
            else
            {
                f1().GB_Status_AppendText_Nextline("Skip)Get_Initial_RGB_Using_LUT_MCI()", Color.DarkRed);
                return(false);
            }
        }
Esempio n. 13
0
        public void Set_OC_Mode_AM0(RGB_Double AM0_Voltage, OC_Mode mode, int band)
        {
            if (band > DP213_Static.Max_HBM_and_Normal_Band_Amount)
            {
                throw new Exception("band should be less than " + DP213_Static.Max_HBM_and_Normal_Band_Amount);
            }

            RGB AM0 = new RGB();

            AM0.int_R = Imported_my_cpp_dll.DP213_Get_AM0_RGB_Dec(ref0ref4095.Get_Normal_REF4095_Voltage(), vreg1.Get_OC_Mode_Vreg1_Voltage(mode, band), AM0_Voltage.double_R);
            AM0.int_G = Imported_my_cpp_dll.DP213_Get_AM0_RGB_Dec(ref0ref4095.Get_Normal_REF4095_Voltage(), vreg1.Get_OC_Mode_Vreg1_Voltage(mode, band), AM0_Voltage.double_G);
            AM0.int_B = Imported_my_cpp_dll.DP213_Get_AM0_RGB_Dec(ref0ref4095.Get_Normal_REF4095_Voltage(), vreg1.Get_OC_Mode_Vreg1_Voltage(mode, band), AM0_Voltage.double_B);
            Set_OC_Mode_AM0(AM0, mode, band);
        }
Esempio n. 14
0
        public void Set_OC_Mode_AM0(RGB AM0, OC_Mode mode, int band)
        {
            AM0 = AM1_AM0_BoundaryCheck(AM0);
            RGB[]        OCMode_AM0         = Get_OC_Mode_AM0(mode);
            RGB_Double[] OCMode_AM0_Voltage = Get_OC_Mode_AM0_Voltage(mode);

            OCMode_AM0[band] = AM0;
            if (band < DP213_Static.Max_HBM_and_Normal_Band_Amount)
            {
                OCMode_AM0_Voltage[band].double_R = Imported_my_cpp_dll.DP213_Get_AM1_RGB_Voltage(ref0ref4095.Get_Normal_REF4095_Voltage(), vreg1.Get_OC_Mode_Vreg1_Voltage(mode, band), AM0.int_R);
                OCMode_AM0_Voltage[band].double_G = Imported_my_cpp_dll.DP213_Get_AM1_RGB_Voltage(ref0ref4095.Get_Normal_REF4095_Voltage(), vreg1.Get_OC_Mode_Vreg1_Voltage(mode, band), AM0.int_G);
                OCMode_AM0_Voltage[band].double_B = Imported_my_cpp_dll.DP213_Get_AM1_RGB_Voltage(ref0ref4095.Get_Normal_REF4095_Voltage(), vreg1.Get_OC_Mode_Vreg1_Voltage(mode, band), AM0.int_B);
            }
        }
Esempio n. 15
0
        private void Sub_DP213_Gray255_Get_Intial_R_Vreg1_B_Using_Previous_Band_Method(Gamma_Set Set, int band, OC_Mode Mode)
        {
            int    Previous_Band_Vreg1_Dec = storage.Get_Normal_Dec_Vreg1(Set, (band - 1));
            double Voltage_VREF4095        = storage.Get_Voltage_VREF4095();
            double Voltage_VREF0           = storage.Get_Voltage_VREF0();

            RGB Prev_Band_AM1 = storage.Get_Band_Set_AM1(Set, (band - 1));

            storage.Set_Band_Set_AM1(Set, band, Prev_Band_AM1);//update AM1 voltage
            RGB_Double Prev_Band_Voltage_AM1 = storage.Get_Band_Set_Voltage_AM1(Set, (band - 1));

            int[]    Previous_Band_Gamma_Red           = new int[DP213_Static.Max_Gray_Amount];
            int[]    Previous_Band_Gamma_Green         = new int[DP213_Static.Max_Gray_Amount];
            int[]    Previous_Band_Gamma_Blue          = new int[DP213_Static.Max_Gray_Amount];
            double[] Previous_Band_Finally_Measured_Lv = new double[DP213_Static.Max_Gray_Amount];


            for (int gray = 0; gray < DP213_Static.Max_Gray_Amount; gray++)
            {
                Previous_Band_Gamma_Red[gray]           = storage.Get_All_band_gray_Gamma(Set, (band - 1), gray).int_R;
                Previous_Band_Gamma_Green[gray]         = storage.Get_All_band_gray_Gamma(Set, (band - 1), gray).int_G;
                Previous_Band_Gamma_Blue[gray]          = storage.Get_All_band_gray_Gamma(Set, (band - 1), gray).int_B;
                Previous_Band_Finally_Measured_Lv[gray] = dp213_mornitoring().Get_Mode_Measured_Values((band - 1), gray, Mode).double_Lv;
            }

            f1().GB_Status_AppendText_Nextline("Before) R/G/B/Vreg1 = " + vars.Gamma.int_R.ToString() + "/" + vars.Gamma.int_G.ToString().ToString() + "/" + vars.Gamma.int_B.ToString() + "/" + vars.Vreg1, Color.Blue);


            Imported_my_cpp_dll.DP213_Gray255_Get_Intial_R_Vreg1_B_Using_Previous_Band_Method_Through_MCI
                (Prev_Band_Voltage_AM1.double_R,
                Prev_Band_Voltage_AM1.double_G,
                Prev_Band_Voltage_AM1.double_B,
                ref vars.Vreg1,
                ref vars.Gamma.int_R,
                ref vars.Gamma.int_B,
                Get_Is_Selected_Bands(Mode),
                Previous_Band_Gamma_Red,
                Previous_Band_Gamma_Green,
                Previous_Band_Gamma_Blue,
                band,
                vars.Target.double_Lv,
                Previous_Band_Vreg1_Dec,
                Previous_Band_Finally_Measured_Lv,
                Voltage_VREF4095,
                Voltage_VREF0);

            f1().GB_Status_AppendText_Nextline("After C++ Dll(MCI)) R/G/B/Vreg1 = " + vars.Gamma.int_R.ToString() + "/" + vars.Gamma.int_G.ToString().ToString() + "/" + vars.Gamma.int_B.ToString() + "/" + vars.Vreg1, Color.Red);
            init_algorithm_storage_cpp.Set_All_band_gray_Gamma(Set, band, 0, vars.Gamma);
        }
Esempio n. 16
0
        public RGB_Double Get_OC_Mode_AM0_Voltage(OC_Mode mode, int band)
        {
            if (band > DP213_Static.Max_HBM_and_Normal_Band_Amount)
            {
                throw new Exception("band should be less than " + DP213_Static.Max_HBM_and_Normal_Band_Amount);
            }

            RGB[]        OCMode_AM0         = Get_OC_Mode_AM0(mode);
            RGB_Double[] OCMode_AM0_Voltage = Get_OC_Mode_AM0_Voltage(mode);
            OCMode_AM0_Voltage[band].double_R = Imported_my_cpp_dll.DP213_Get_AM0_RGB_Voltage(ref0ref4095.Get_Normal_REF4095_Voltage(), vreg1.Get_OC_Mode_Vreg1_Voltage(mode, band), OCMode_AM0[band].int_R);
            OCMode_AM0_Voltage[band].double_G = Imported_my_cpp_dll.DP213_Get_AM0_RGB_Voltage(ref0ref4095.Get_Normal_REF4095_Voltage(), vreg1.Get_OC_Mode_Vreg1_Voltage(mode, band), OCMode_AM0[band].int_G);
            OCMode_AM0_Voltage[band].double_B = Imported_my_cpp_dll.DP213_Get_AM0_RGB_Voltage(ref0ref4095.Get_Normal_REF4095_Voltage(), vreg1.Get_OC_Mode_Vreg1_Voltage(mode, band), OCMode_AM0[band].int_B);

            return(OCMode_AM0_Voltage[band]);
        }
Esempio n. 17
0
        private RGB_Double Update_HBM_Normal_Gamma_Voltage(OC_Mode mode, int band, int gray, RGB New_Gamma)
        {
            RGB_Double[,] OCMode_RGB_Voltage = Get_OC_Mode_RGB_Voltage(mode);

            if (gray == 0)
            {
                OCMode_RGB_Voltage[band, gray].double_R = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Voltage(ref0ref4095.Get_Normal_REF4095_Voltage(), vreg1.Get_OC_Mode_Vreg1_Voltage(mode, band), New_Gamma.int_R);
                OCMode_RGB_Voltage[band, gray].double_G = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Voltage(ref0ref4095.Get_Normal_REF4095_Voltage(), vreg1.Get_OC_Mode_Vreg1_Voltage(mode, band), New_Gamma.int_G);
                OCMode_RGB_Voltage[band, gray].double_B = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Voltage(ref0ref4095.Get_Normal_REF4095_Voltage(), vreg1.Get_OC_Mode_Vreg1_Voltage(mode, band), New_Gamma.int_B);
            }
            else
            {
                RGB_Double Prev_GR_Gamma_Voltage = Get_Prev_GR_Gamma_Voltage(OCMode_RGB_Voltage, band, gray);
                OCMode_RGB_Voltage[band, gray].double_R = Imported_my_cpp_dll.DP213_Get_GR_Gamma_Voltage(am1am0.Get_OC_Mode_AM1_Voltage(mode, band).double_R, Prev_GR_Gamma_Voltage.double_R, New_Gamma.int_R, gray);
                OCMode_RGB_Voltage[band, gray].double_G = Imported_my_cpp_dll.DP213_Get_GR_Gamma_Voltage(am1am0.Get_OC_Mode_AM1_Voltage(mode, band).double_G, Prev_GR_Gamma_Voltage.double_G, New_Gamma.int_G, gray);
                OCMode_RGB_Voltage[band, gray].double_B = Imported_my_cpp_dll.DP213_Get_GR_Gamma_Voltage(am1am0.Get_OC_Mode_AM1_Voltage(mode, band).double_B, Prev_GR_Gamma_Voltage.double_B, New_Gamma.int_B, gray);
            }
            return(OCMode_RGB_Voltage[band, gray]);
        }
Esempio n. 18
0
        private double Get_HBM_RGB_Min_AM2_Voltage()
        {
            RGB AM2     = ocparam.Get_OC_Mode_RGB(DP213OCSet.Get_WhiteCompensation_OCMode(), band: 0, gray: 0);
            int Vreg1   = ocparam.Get_OC_Mode_Vreg1(DP213OCSet.Get_WhiteCompensation_OCMode(), band: 0);
            int REF0    = ocparam.Get_Normal_REF0();
            int REF4095 = ocparam.Get_Normal_REF4095();

            double REF0_Voltage    = Imported_my_cpp_dll.DP213_VREF0_Dec_to_Voltage(REF0);
            double REF4095_Voltage = Imported_my_cpp_dll.DP213_VREF4095_Dec_to_Voltage(REF4095);
            double Vreg1_Voltage   = Imported_my_cpp_dll.DP213_Get_Vreg1_Voltage(REF4095_Voltage, REF0_Voltage, Vreg1);

            RGB_Double AM2_Voltage = new RGB_Double();

            AM2_Voltage.double_R = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Voltage(REF4095_Voltage, Vreg1_Voltage, AM2.int_R);
            AM2_Voltage.double_G = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Voltage(REF4095_Voltage, Vreg1_Voltage, AM2.int_G);
            AM2_Voltage.double_B = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Voltage(REF4095_Voltage, Vreg1_Voltage, AM2.int_B);
            api.WriteLine("AM2_Voltage R/G/B : " + AM2_Voltage.double_R + "/" + AM2_Voltage.double_G + "/" + AM2_Voltage.double_B);
            api.WriteLine("Old VREF0 Voltage : " + REF0_Voltage);

            return(Get_Min_RGB_Voltage(AM2_Voltage));
        }
Esempio n. 19
0
        private bool AM0_Compensation()
        {
            RGB_Double AM0_Margin     = DP213OCSet.Get_AM0_Margin();
            double     AM0_Resolution = Imported_my_cpp_dll.Get_DP213_EA9155_AM0_Resolution(ocparam.Get_Normal_REF0(), ocparam.Get_Normal_REF4095());

            RGB New_AM0 = new RGB();

            New_AM0.int_R = Convert.ToInt32(AM0_Margin.double_R / AM0_Resolution);
            New_AM0.int_G = Convert.ToInt32(AM0_Margin.double_G / AM0_Resolution);
            New_AM0.int_B = Convert.ToInt32(AM0_Margin.double_B / AM0_Resolution);

            bool AM0_OC_Ok = (New_AM0.int_R <= DP213_Static.AM1_AM0_Max) && (New_AM0.int_G <= DP213_Static.AM1_AM0_Max) && (New_AM0.int_B <= DP213_Static.AM1_AM0_Max);

            api.WriteLine("DP213_Static.AM1_AM0_Max : " + DP213_Static.AM1_AM0_Max);
            api.WriteLine("New_AM0 R/G/B : " + New_AM0.int_R + "/" + New_AM0.int_G + "/" + New_AM0.int_B);

            if (AM0_OC_Ok)
            {
                Set_All_AM0_WithSameValues(New_AM0);
            }

            return(AM0_OC_Ok);
        }
Esempio n. 20
0
        public void Set_Band_Set_AM1(Gamma_Set Set, int band, RGB New_AM1)
        {
            if (New_AM1.int_R > DP213_Static.AM1_AM0_Max)
            {
                New_AM1.int_R = DP213_Static.AM1_AM0_Max;
            }
            if (New_AM1.int_G > DP213_Static.AM1_AM0_Max)
            {
                New_AM1.int_G = DP213_Static.AM1_AM0_Max;
            }
            if (New_AM1.int_B > DP213_Static.AM1_AM0_Max)
            {
                New_AM1.int_B = DP213_Static.AM1_AM0_Max;
            }
            if (New_AM1.int_R < 0)
            {
                New_AM1.int_R = 0;
            }
            if (New_AM1.int_G < 0)
            {
                New_AM1.int_G = 0;
            }
            if (New_AM1.int_B < 0)
            {
                New_AM1.int_B = 0;
            }

            if (band < DP213_Static.Max_HBM_and_Normal_Band_Amount)
            {
                int Set_Index = Convert.ToInt16(Set);
                AM1[Set_Index, band] = New_AM1;

                Voltage_AM1[Set_Index, band].double_R = Imported_my_cpp_dll.DP213_Get_AM1_RGB_Voltage(Get_Voltage_VREF4095(), Get_Normal_Voltage_Vreg1(Set, band), Get_Band_Set_AM1(Set, band).int_R);
                Voltage_AM1[Set_Index, band].double_G = Imported_my_cpp_dll.DP213_Get_AM1_RGB_Voltage(Get_Voltage_VREF4095(), Get_Normal_Voltage_Vreg1(Set, band), Get_Band_Set_AM1(Set, band).int_G);
                Voltage_AM1[Set_Index, band].double_B = Imported_my_cpp_dll.DP213_Get_AM1_RGB_Voltage(Get_Voltage_VREF4095(), Get_Normal_Voltage_Vreg1(Set, band), Get_Band_Set_AM1(Set, band).int_B);
            }
        }
Esempio n. 21
0
        private static double[] Get_Previous_Band_Gamma_Voltage(double Prev_Band_AM1_Voltage, int Previous_Band_Vreg1_Dec, int[] Previous_Band_Gamma, double Voltage_VREF4095, double Voltage_VREF0)
        {
            double[] Previous_Band_Gamma_Voltage = new double[DP213_Static.Max_Gray_Amount];
            double   Previous_Band_Vreg1_Voltage = Imported_my_cpp_dll.DP213_Get_Vreg1_Voltage(Voltage_VREF4095, Voltage_VREF0, Previous_Band_Vreg1_Dec);

            for (int gray = 0; gray < DP213_Static.Max_Gray_Amount; gray++)
            {
                if (gray == 0)
                {
                    Previous_Band_Gamma_Voltage[gray] = Imported_my_cpp_dll.DP213_Get_AM2_Gamma_Voltage(Voltage_VREF4095, Previous_Band_Vreg1_Voltage, Previous_Band_Gamma[gray]);
                }

                else if (gray == 1 || gray == 2 || gray == 3 || gray == 5 || gray == 7 || gray == 9 || gray == 10)
                {
                    Previous_Band_Gamma_Voltage[gray] = Imported_my_cpp_dll.DP213_Get_GR_Gamma_Voltage(Prev_Band_AM1_Voltage, Previous_Band_Gamma_Voltage[gray - 1], Previous_Band_Gamma[gray], gray);
                }

                else if (gray == 4 || gray == 6 || gray == 8)
                {
                    Previous_Band_Gamma_Voltage[gray] = Imported_my_cpp_dll.DP213_Get_GR_Gamma_Voltage(Prev_Band_AM1_Voltage, Previous_Band_Gamma_Voltage[gray - 2], Previous_Band_Gamma[gray], gray);
                }
            }
            return(Previous_Band_Gamma_Voltage);
        }
Esempio n. 22
0
 public void Set_Normal_Dec_Vreg1(Gamma_Set Set, int band, int New_Vreg1)
 {
     Dec_Normal_Vreg1[Convert.ToInt16(Set), band] = New_Vreg1;
     Vreg1_Voltage[Convert.ToInt16(Set), band]    = Imported_my_cpp_dll.DP213_Get_Vreg1_Voltage(Get_Voltage_VREF4095(), Get_Voltage_VREF0(), Get_Normal_Dec_Vreg1(Set, band));
 }
Esempio n. 23
0
 public double Get_Voltage_Vinit2(Gamma_Set Set, int band)
 {
     Voltage_Vinit2[Convert.ToInt16(Set), band] = Imported_my_cpp_dll.DP213_VINI2_Dec_to_Voltage(Dec_Vinit2[Convert.ToInt16(Set), band]);
     return(Voltage_Vinit2[Convert.ToInt16(Set), band]);
 }
Esempio n. 24
0
 public void Set_Voltage_Vinit2(Gamma_Set Set, int band, double New_Vinit2_Voltage)
 {
     Voltage_Vinit2[Convert.ToInt16(Set), band] = New_Vinit2_Voltage;
     Dec_Vinit2[Convert.ToInt16(Set), band]     = Convert.ToByte(Imported_my_cpp_dll.DP213_VINI2_Voltage_to_Dec(New_Vinit2_Voltage));
 }
Esempio n. 25
0
 public void Set_Dec_Vinit2(Gamma_Set Set, int band, byte New_Dec_Vinit2)
 {
     Dec_Vinit2[Convert.ToInt16(Set), band]     = New_Dec_Vinit2;
     Voltage_Vinit2[Convert.ToInt16(Set), band] = Imported_my_cpp_dll.DP213_VINI2_Dec_to_Voltage(New_Dec_Vinit2);
 }
Esempio n. 26
0
 public double Get_Voltage_ELVSS(Gamma_Set Set, int band)
 {
     Voltage_ELVSS[Convert.ToInt16(Set), band] = Imported_my_cpp_dll.DP213_ELVSS_Dec_to_Voltage(Dec_ELVSS[Convert.ToInt16(Set), band]);
     return(Voltage_ELVSS[Convert.ToInt16(Set), band]);
 }
Esempio n. 27
0
 public void Set_Voltage_ELVSS(Gamma_Set Set, int band, double New_ELVSS_Voltage)
 {
     Voltage_ELVSS[Convert.ToInt16(Set), band] = New_ELVSS_Voltage;
     Dec_ELVSS[Convert.ToInt16(Set), band]     = Convert.ToByte(Imported_my_cpp_dll.DP213_ELVSS_Voltage_to_Dec(New_ELVSS_Voltage));
 }
Esempio n. 28
0
 public void Set_Dec_ELVSS(Gamma_Set Set, int band, byte New_Dec_ELVSS)
 {
     Dec_ELVSS[Convert.ToInt16(Set), band]     = New_Dec_ELVSS;
     Voltage_ELVSS[Convert.ToInt16(Set), band] = Imported_my_cpp_dll.DP213_ELVSS_Dec_to_Voltage(New_Dec_ELVSS);
 }
Esempio n. 29
0
 public double Get_Normal_Voltage_Vreg1(Gamma_Set Set, int band)
 {
     Vreg1_Voltage[Convert.ToInt16(Set), band] = Imported_my_cpp_dll.DP213_Get_Vreg1_Voltage(Get_Voltage_VREF4095(), Get_Voltage_VREF0(), Get_Normal_Dec_Vreg1(Set, band));
     return(Vreg1_Voltage[Convert.ToInt16(Set), band]);
 }
Esempio n. 30
0
 public double Get_Voltage_VREF0()
 {
     Voltage_VREF0 = Imported_my_cpp_dll.DP213_VREF0_Dec_to_Voltage(Byte_VREF0);
     return(Voltage_VREF0);
 }