Example #1
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();
            }
        }
Example #2
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));
 }