예제 #1
0
 public void Set_OC_Mode_Limit(OC_Mode mode, int band, int gray, XYLv xylv)
 {
     if (mode == OC_Mode.Mode1)
     {
         OC_Mode1_Limit[band, gray] = xylv;
     }
     else if (mode == OC_Mode.Mode2)
     {
         OC_Mode2_Limit[band, gray] = xylv;
     }
     else if (mode == OC_Mode.Mode3)
     {
         OC_Mode3_Limit[band, gray] = xylv;
     }
     else if (mode == OC_Mode.Mode4)
     {
         OC_Mode4_Limit[band, gray] = xylv;
     }
     else if (mode == OC_Mode.Mode5)
     {
         OC_Mode5_Limit[band, gray] = xylv;
     }
     else if (mode == OC_Mode.Mode6)
     {
         OC_Mode6_Limit[band, gray] = xylv;
     }
     else
     {
         throw new Exception("Mode Should be 1~6");
     }
 }
예제 #2
0
        private void UpdateOCMode23Target(int band, int gray)
        {
            XYLv OCMode1FinalMeas = ocparam.Get_OC_Mode_Measure(OC_Mode.Mode1, band, gray);

            ocparam.Set_OC_Mode_Target(OC_Mode.Mode2, band, gray, OCMode1FinalMeas);
            ocparam.Set_OC_Mode_Target(OC_Mode.Mode3, band, gray, OCMode1FinalMeas);
        }
예제 #3
0
 public void Set_OC_Mode_Measure(XYLv measured, OC_Mode mode, int band, int gray)
 {
     if (mode == OC_Mode.Mode1)
     {
         OC_Mode1_Measure[band, gray] = measured;
     }
     else if (mode == OC_Mode.Mode2)
     {
         OC_Mode2_Measure[band, gray] = measured;
     }
     else if (mode == OC_Mode.Mode3)
     {
         OC_Mode3_Measure[band, gray] = measured;
     }
     else if (mode == OC_Mode.Mode4)
     {
         OC_Mode4_Measure[band, gray] = measured;
     }
     else if (mode == OC_Mode.Mode5)
     {
         OC_Mode5_Measure[band, gray] = measured;
     }
     else if (mode == OC_Mode.Mode6)
     {
         OC_Mode6_Measure[band, gray] = measured;
     }
     else
     {
         throw new Exception("Mode Should be 1~6");
     }
 }
예제 #4
0
        protected void MeasureAndUpdate(OC_Mode mode, int band, int gray)
        {
            double[] MeasuredXYLv = api.measure_XYL(channel_num);
            ocparam.Set_OC_Mode_Measure(new XYLv(MeasuredXYLv[0], MeasuredXYLv[1], MeasuredXYLv[2]), mode, band, gray);

            XYLv TargetXYLv = ocparam.Get_OC_Mode_Target(mode, band, gray);

            api.WriteLine($"Measured X / Y / Lv : {MeasuredXYLv[0]} / {MeasuredXYLv[1]} / {MeasuredXYLv[2]}");
            api.WriteLine($"Target X / Y / Lv : {TargetXYLv.double_X} / {TargetXYLv.double_Y} / {TargetXYLv.double_Lv}");
        }
예제 #5
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);
        }
예제 #6
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);
        }
예제 #7
0
        private XYLv[] Get_Multitimes_Measured_Values(int how_many_times)
        {
            XYLv[] Temp_Measures = new XYLv[how_many_times];

            for (int i = 0; i < Temp_Measures.Length; i++)
            {
                double[] measured = api.measure_XYL(channel_num);

                Temp_Measures[i].double_X  = measured[0];
                Temp_Measures[i].double_Y  = measured[1];
                Temp_Measures[i].double_Lv = measured[2];
            }
            return(Temp_Measures);
        }
예제 #8
0
        static void Main(string[] args)
        {
            const int n = 3;

            RGB[] rgb60 = new RGB[n];
            rgb60[0].R = 500; rgb60[0].G = 377; rgb60[0].B = 333;
            rgb60[1].R = 151; rgb60[1].G = 369; rgb60[1].B = 181;
            rgb60[2].R = 145; rgb60[2].G = 367; rgb60[2].B = 317;

            RGB[] rgb90 = new RGB[n];
            rgb90[0].R = 317; rgb90[0].G = 167; rgb90[0].B = 54;
            rgb90[1].R = 242; rgb90[1].G = 96; rgb90[1].B = 458;
            rgb90[2].R = 338; rgb90[2].G = 492; rgb90[2].B = 464;

            RGB[] rgb120 = new RGB[n];
            rgb120[0].R = 188; rgb120[0].G = 230; rgb120[0].B = 71;
            rgb120[1].R = 448; rgb120[1].G = 247; rgb120[1].B = 504;
            rgb120[2].R = 71; rgb120[2].G = 108; rgb120[2].B = 160;

            XYLv[] xylv60 = new XYLv[n];
            xylv60[0].X = 0.306; xylv60[0].Y = 0.313; xylv60[0].Lv = 908;
            xylv60[1].X = 0.309; xylv60[1].Y = 0.312; xylv60[1].Lv = 899;
            xylv60[2].X = 0.310; xylv60[2].Y = 0.319; xylv60[2].Lv = 898;

            XYLv[] xylv90 = new XYLv[n];
            xylv90[0].X = 0.304; xylv90[0].Y = 0.312; xylv90[0].Lv = 902;
            xylv90[1].X = 0.302; xylv90[1].Y = 0.319; xylv90[1].Lv = 904;
            xylv90[2].X = 0.306; xylv90[2].Y = 0.313; xylv90[2].Lv = 902;

            XYLv[] xylv120 = new XYLv[n];;
            xylv120[0].X = 0.309; xylv120[0].Y = 0.311; xylv120[0].Lv = 907;
            xylv120[1].X = 0.304; xylv120[1].Y = 0.311; xylv120[1].Lv = 895;
            xylv120[2].X = 0.307; xylv120[2].Y = 0.320; xylv120[2].Lv = 907;


            string ans = Program.min_Dist(rgb60, rgb90, rgb120, xylv60, xylv90, xylv120, n);

            Console.WriteLine("result(ans) : " + ans);
        }
예제 #9
0
 public void Set_OC_Mode_Target(OC_Mode mode, int band, int gray, XYLv xylv) => target.Set_OC_Mode_Target(mode, band, gray, xylv);
예제 #10
0
 public void Set_OC_Mode_Measure(XYLv measured, OC_Mode mode, int band, int gray) => measure.Set_OC_Mode_Measure(measured, mode, band, gray);
예제 #11
0
 public void Set_OC_Mode_Limit(OC_Mode mode, int band, int gray, XYLv xylv) => limit.Set_OC_Mode_Limit(mode, band, gray, xylv);
예제 #12
0
 public void Set_OC_Mode_ExtensionXY(OC_Mode mode, int band, int gray, XYLv xylv) => extensionXY.Set_OC_Mode_ExtensionXY(mode, band, gray, xylv);
예제 #13
0
 public void Set_OC_Mode_Target(OC_Mode mode, int band, int gray, XYLv xylv)
 {
     throw new NotImplementedException();
 }
예제 #14
0
 public void Set_OC_Mode_Measure(XYLv measured, OC_Mode mode, int band, int gray)
 {
     throw new NotImplementedException();
 }