uint FUN_INTERVAL_CALC(CRabcickl a) { uint INTERVAL; INTERVAL = (a.Tblank1 + a.Ti + a.Tblank2 + a.Tp) * a.N_cikl;//расчитали длительность цикла return(INTERVAL); }
private void button1_Copy1_Click(object sender, RoutedEventArgs e) { CRabcickl c0 = new CRabcickl(); c0.Amplitude0 = Convert.ToInt16(textBox_AMP0.Text); c0.Amplitude1 = Convert.ToInt16(textBox_AMP1.Text); c0.Amplitude2 = Convert.ToInt16(textBox_AMP2.Text); c0.Amplitude3 = Convert.ToInt16(textBox_AMP3.Text); c0.Calibrovka = Convert.ToInt16(checkBox_Calibrovka.IsChecked); c0.Coherent = Convert.ToInt16(checkBox_Coherent.IsChecked); c0.DELAY0 = Convert.ToInt16(textBox_DELAY0.Text); c0.DELAY1 = Convert.ToInt16(textBox_DELAY1.Text); c0.DELAY2 = Convert.ToInt16(textBox_DELAY2.Text); c0.DELAY3 = Convert.ToInt16(textBox_DELAY3.Text); c0.deviation = Convert.ToInt64(textBox_dev_FREQ.Text); c0.FREQ = Convert.ToUInt64(textBox_FREQ.Text); c0.FREQ_STEP = Convert.ToInt64(textBox_FREQ_STEP.Text); c0.FREQ_RATE = Convert.ToUInt32(textBox_FREQ_RATE.Text); c0.N_cikl = Convert.ToUInt16(textBox_N_intervals.Text);//число интервалов в цикле c0.NUMBER_RECORD = Convert.ToInt32(textBox_Number_record.Text); c0.PHASE0 = Convert.ToInt16(textBox_PHASE0.Text); c0.PHASE1 = Convert.ToInt16(textBox_PHASE1.Text); c0.PHASE2 = Convert.ToInt16(textBox_PHASE2.Text); c0.PHASE3 = Convert.ToInt16(textBox_PHASE3.Text); c0.Tblank1 = Convert.ToUInt32(textBox_Tdop_iz.Text); c0.Tblank2 = Convert.ToUInt32(textBox_Tdop_pr.Text); c0.Ti = Convert.ToUInt32(textBox_Ti.Text); c0.Tp = Convert.ToUInt32(textBox_Tp.Text); // c0.TIME_START=Convert.ToInt64(textBox_TIME_START.Text); if (list.Count > 0) { if (c0.TIME_START < list[(list.Count - 1)].TIME_END) { c0.TIME_START = list[(list.Count - 1)].TIME_END; } } else { c0.TIME_START = Convert.ToUInt64(textBox_TIME_START.Text); } c0.TYPE = 0; textBox_Dlitelnost_cikl.Text = (FUN_INTERVAL_CALC(c0)).ToString();//рассчитываем длительность текущего цикла c0.TIME_END = Convert.ToUInt64(textBox_Dlitelnost_cikl.Text) + c0.TIME_START; c0.NUMBER_RECORD = list.Count; list.Add(c0); textBox_N_cikl.Text = (list.Count).ToString(); //считаем общее количество циклов textBox_Number_record.Text = (c0.NUMBER_RECORD).ToString(); //номер текущего цикла }
public WSP_test16(MainWindow m, string name) { CRabcickl z = new CRabcickl(); InitializeComponent(); this.name = name; this.Title = name.ToUpper(); init = 1; MASTER = m; Timer1.Tick += new EventHandler(Timer1_Tick); Timer1.Interval = new TimeSpan(0, 0, 0, 0, 100); Timer1.Stop();//останавливаю таймер //----------выключаем сигнал на тестере и DUT----------------- MASTER.FILTR_SMOOTH = 4; CMD_REALTIME_SETUP(ref z, 435000000); // z.Calibrovka = 0; //приём ведём на интервале приёма (в данном тесте вообще не ведём приём) z.Amplitude0 = 100; //давим сигнал излучения z.Amplitude1 = 100; z.Amplitude2 = 100; z.Amplitude3 = 100; z.N_cikl = 1; z.Tblank1 = 100; z.Tblank2 = 100; z.Ti = 1000;// z.Tp = 1000; CMD_REALTIME_UPDATE(ref z); MASTER.panel_Sint.FUNC_LIST_UPDATE_v2(z, "DUT"); MASTER.panel_Sint.FUNC_LIST_UPDATE_v2(z, "TESTER"); }
//Этот метод сосздаёт структуру команды реального времени из внешних данных public void FUNC_LIST_UPDATE(CRabcickl c0) { list.Clear(); c0.NUMBER_RECORD = list.Count; var tmp1 = FUN_INTERVAL_CALC(c0).ToString(); //рассчитываем длительность текущего цикла // Console.WriteLine("Длительность цикла:"+tmp1); list.Insert(0, c0);// CMD_LIST_FORM("DUT"); }
//Этот метод сосздаёт структуру команды реального времени из внешних данных public void FUNC_LIST_UPDATE_v2(CRabcickl c0, string n) { list.Clear(); c0.NUMBER_RECORD = list.Count; var tmp1 = FUN_INTERVAL_CALC(c0).ToString();//рассчитываем длительность текущего цикла // Console.WriteLine("Длительность цикла:"+tmp1); c0.TYPE = (ushort)(((c0.Calibrovka & 1) << 1) + (c0.Coherent & 1)); list.Insert(0, c0);// CMD_LIST_FORM(n); }
private CRabcickl CMD_REALTIME_UPDATE(int frq) { CRabcickl a = new CRabcickl(); a.Amplitude0 = DDS_ATT; a.Amplitude1 = DDS_ATT; a.Amplitude2 = DDS_ATT; a.Amplitude3 = DDS_ATT; if (FLAG_MAX_ZS == 1) { MASTER.b072.I_DAC0 = 15;// MASTER.b072.I_DAC0 = 15; MASTER.b072.I_DAC1 = 15; MASTER.b072.I_DAC1 = 15; } a.Att0 = 0; a.Att1 = 0; a.Att2 = 0; a.Att3 = 0; a.SYSREF = 0;//включаем sysref a.Calibrovka = 1; a.Coherent = 0; a.DELAY0 = 0; a.DELAY1 = 0; a.DELAY2 = 0; a.DELAY3 = 0; a.deviation = 0;// a.FREQ = frq; a.FREQ_RATE = 0; a.FREQ_STEP = 0; a.NUMBER_RECORD = 1; a.N_cikl = 10000; a.PHASE0 = 0; a.PHASE1 = 0; a.PHASE2 = 0; a.PHASE3 = 0; a.Tblank1 = 100; a.Tblank2 = 100; a.Ti = 59000000; a.Tp = 100; a.TIME_END = 0; a.TIME_START = 10000; a.TYPE = (ushort)(((a.Calibrovka & 1) << 1) + (a.Coherent & 1)); return(a); }
private void CMD_REALTIME_UPDATE(ref CRabcickl a) { double step = 0; double rate = 1.0 / 96.0; double Timp = Convert.ToDouble(a.Ti); double FREQ_DEV = Convert.ToDouble(a.deviation); double N_step = Math.Round(Timp / rate);//расчитываем число шагов для DDS // Console.WriteLine("Timp:"+Timp); // Console.WriteLine("FREQ_DEV:"+FREQ_DEV); // Console.WriteLine("N_step:"+N_step); step = FREQ_DEV / N_step;//расчитываем длинну шага в Гц rate = Math.Round(rate * 1000.0); a.FREQ_RATE = (uint)rate; a.FREQ_STEP = step; a.TYPE = (ushort)(((a.Calibrovka & 1) << 1) + (a.Coherent & 1)); }
private CRabcickl CMD_REALTIME_UPDATE(int frq) { CRabcickl a = new CRabcickl(); // double lvl = 16 - LEVEL; a.Amplitude0 = 16 - LEVEL;//величена ослабления выходного сигнала ЦАП к 16 Дбм a.Amplitude1 = 16 - LEVEL; a.Amplitude2 = 16 - LEVEL; a.Amplitude3 = 16 - LEVEL; a.Att0 = 0; a.Att1 = 0; a.Att2 = 0; a.Att3 = 0; a.SYSREF = 0;//включаем sysref чтобы не было спур a.Calibrovka = 1; a.Coherent = 0; a.DELAY0 = 0; a.DELAY1 = 0; a.DELAY2 = 0; a.DELAY3 = 0; a.deviation = 0;// // Console.WriteLine("frq="+frq); a.FREQ = frq; a.FREQ_RATE = 0; a.FREQ_STEP = 0; a.NUMBER_RECORD = 1; a.N_cikl = 1; a.PHASE0 = 0; a.PHASE1 = 0; a.PHASE2 = 0; a.PHASE3 = 0; a.Tblank1 = 100; a.Tblank2 = 100; a.Ti = 20000000; a.Tp = 100; a.TIME_END = 0; a.TIME_START = 10000; a.TYPE = (ushort)(((a.Calibrovka & 1) << 1) + (a.Coherent & 1)); return(a); }
private CRabcickl CMD_REALTIME_UPDATE(int frq) { CRabcickl a = new CRabcickl(); a.Amplitude0 = 100;//давим сигнал излучения, чтобы не мешал приёму a.Amplitude1 = 100; a.Amplitude2 = 100; a.Amplitude3 = 100; a.Att0 = 0; a.Att1 = 0; a.Att2 = 0; a.Att3 = 0; a.SYSREF = 0; //включаем sysref чтобы не было спур a.Calibrovka = 1; //приём ведём на интервале приёма a.Coherent = 0; a.DELAY0 = 0; a.DELAY1 = 0; a.DELAY2 = 0; a.DELAY3 = 0; a.deviation = 0; // // Console.WriteLine("frq="+frq); a.FREQ = 425000000; a.FREQ_RATE = 0; a.FREQ_STEP = 0; a.NUMBER_RECORD = 1; a.N_cikl = 32000; a.PHASE0 = 0; a.PHASE1 = 0; a.PHASE2 = 0; a.PHASE3 = 0; a.Tblank1 = 100; a.Tblank2 = 100; a.Ti = 100; a.Tp = 59000000; a.TIME_END = 0; a.TIME_START = 10000; a.TYPE = (ushort)(((a.Calibrovka & 1) << 1) + (a.Coherent & 1)); return(a); }
private CRabcickl CMD_REALTIME_UPDATE(int frq) { CRabcickl a = new CRabcickl(); a.Amplitude0 = DDS_ATT;//давим сигнал излучения, чтобы не мешал приёму a.Amplitude1 = DDS_ATT; a.Amplitude2 = DDS_ATT; a.Amplitude3 = DDS_ATT; a.Att0 = 0; a.Att1 = 0; a.Att2 = 0; a.Att3 = 0; a.SYSREF = 0; //включена синхронизация SYSREF! a.Calibrovka = 0; //приём ведём на интервале излучения a.Coherent = 0; a.DELAY0 = 0; a.DELAY1 = 0; a.DELAY2 = 0; a.DELAY3 = 0; a.deviation = 0;// Console.WriteLine("frq=" + frq); a.FREQ = frq; a.FREQ_RATE = 0; a.FREQ_STEP = 0; a.NUMBER_RECORD = 1; a.N_cikl = 32000; a.PHASE0 = 0; a.PHASE1 = 0; a.PHASE2 = 0; a.PHASE3 = 0; a.Tblank1 = 100; a.Tblank2 = 100; a.Ti = 59000000;//важно отследить этот момент!!! a.Tp = 100; a.TIME_END = 0; a.TIME_START = 100000; a.TYPE = (ushort)(((a.Calibrovka & 1) << 1) + (a.Coherent & 1)); return(a); }
private void CMD_REALTIME_SETUP(ref CRabcickl a, int frq, int dev, int timp, double duty) { double tmp = 0; a.Amplitude0 = 0; //давим сигнал излучения, чтобы не мешал приёму a.Amplitude1 = 0; // a.Amplitude2 = 0; // a.Amplitude3 = 0; // a.Att0 = 0; a.Att1 = 0; a.Att2 = 0; a.Att3 = 0; a.SYSREF = 0; //включаем sysref чтобы не было спур a.Calibrovka = 0; //приём ведём на интервале излучения a.Coherent = 0; a.DELAY0 = 0; a.DELAY1 = 0; a.DELAY2 = 0; a.DELAY3 = 0; a.deviation = dev;// a.FREQ = frq; a.FREQ_RATE = 0; a.FREQ_STEP = 0; a.NUMBER_RECORD = 1; a.N_cikl = 63000; a.PHASE0 = 0; a.PHASE1 = 0; a.PHASE2 = 0; a.PHASE3 = 0; a.Tblank1 = 1; a.Tblank2 = 1; a.Ti = (uint)timp;// tmp = (((double)timp * duty) - a.Tblank1 - a.Tblank2 - timp); a.Tp = (uint)tmp; a.TIME_END = 0; a.TIME_START = 10000; a.TYPE = (ushort)(((a.Calibrovka & 1) << 1) + (a.Coherent & 1)); }
private void CMD_REALTIME_SETUP(ref CRabcickl a, int frq) { a.Amplitude0 = DDS_ATT; //давим сигнал излучения, чтобы не мешал приёму a.Amplitude1 = DDS_ATT; // a.Amplitude2 = DDS_ATT; // a.Amplitude3 = DDS_ATT; // a.Att0 = 0; a.Att1 = 0; a.Att2 = 0; a.Att3 = 0; a.Calibrovka = 0;//приём ведём на интервале излучения a.Coherent = 0; a.DELAY0 = 0; a.DELAY1 = 0; a.DELAY2 = 0; a.DELAY3 = 0; a.deviation = 0;// a.FREQ = frq; a.FREQ_RATE = 0; a.FREQ_STEP = 0; a.NUMBER_RECORD = 1; a.N_cikl = 32000; a.PHASE0 = 0; a.PHASE1 = 0; a.PHASE2 = 0; a.PHASE3 = 0; a.Tblank1 = 100; a.Tblank2 = 100; a.Ti = 59000000;// a.Tp = 100; a.TIME_END = 0; a.TIME_START = 100000; a.TYPE = (ushort)(((a.Calibrovka & 1) << 1) + (a.Coherent & 1)); }
private void CMD_REALTIME_UPDATE(ref CRabcickl a) { a.TYPE = (ushort)(((a.Calibrovka & 1) << 1) + (a.Coherent & 1)); }
private CRabcickl CMD_REALTIME_UPDATE(int frq) { CRabcickl a = new CRabcickl(); //--------Считаем параметры девиации если надо---------- int FLAG_COGERENT = 0; double step; double rate = 1.0 / 96.0; double N_step = Math.Round(Timp / rate);//расчитываем число шагов для DDS // Console.WriteLine("Timp:"+Timp); // Console.WriteLine("FREQ_DEV:"+FREQ_DEV); // Console.WriteLine("N_step:"+N_step); step = FREQ_DEV / N_step;//расчитываем длинну шага в Гц rate = Math.Round(rate * 1000.0); //------------------------------------------------------ //------расчитываем начальную частоту и точки измерений- var tmp0 = FREQ_DEV / 2; FREQ_START = FREQ - tmp0; fx1.min = FREQ - delta_fx1 - tmp0; fx1.max = FREQ + delta_fx1 + tmp0; fx2.min = FREQ - delta_fx2 - tmp0; fx2.max = FREQ + delta_fx2 + tmp0; fx3.min = FREQ - delta_fx3 - tmp0; fx3.max = FREQ + delta_fx3 + tmp0; fx4.min = FREQ - delta_fx4 - tmp0; fx4.max = FREQ + delta_fx4 + tmp0; fx5.min = FREQ - delta_fx5 - tmp0; fx5.max = FREQ + delta_fx5 + tmp0; fx6.min = FREQ - delta_fx6 - tmp0; fx6.max = FREQ + delta_fx6 + tmp0; //------------------------------------------------------ a.Amplitude0 = 15 - LEVEL; a.Amplitude1 = 15 - LEVEL; a.Amplitude2 = 15 - LEVEL; a.Amplitude3 = 15 - LEVEL; a.Att0 = 0; a.Att1 = 0; a.Att2 = 0; a.Att3 = 0; a.SYSREF = 0;//включаем sysref чтобы не было спур a.Calibrovka = 1; a.Coherent = 0; a.DELAY0 = 0; a.DELAY1 = 0; a.DELAY2 = 0; a.DELAY3 = 0; a.deviation = 0;// a.FREQ = FREQ_START; a.FREQ_RATE = Convert.ToUInt32(rate); a.FREQ_STEP = step; a.NUMBER_RECORD = 1; a.N_cikl = 59000; a.PHASE0 = 0; a.PHASE1 = 0; a.PHASE2 = 0; a.PHASE3 = 0; a.Tblank1 = 10; a.Tblank2 = 10; a.Ti = Convert.ToUInt32(Timp); a.Tp = 100; a.TIME_END = 0; a.TIME_START = 10000; a.TYPE = (ushort)(((a.Calibrovka & 1) << 1) + (a.Coherent & 1)); return(a); }
public void STATE_NEXT() { CRabcickl z = new CRabcickl(); switch (st) { case STATE.START: TIMER_DELAY = 100; ERROR_MSG += "Тест №16\r\n"; ERROR_MSG += "Проверяем общую функциональность\r\n"; ERROR_MSG += STATE_CONTROL_TESTER(); ERROR_MSG += STATE_CONTROL(); st = st + 1; FLAG_END = false; PROGRESS = 20; break; case STATE.ST1: ERROR_MSG += "Выключаем ключ в положение - Рабочее\r\n"; SWITCH_DUT(false); //false SWITCH_TESTER(false); TIMER_DELAY = 100; st = st + 1; PROGRESS = 30; break; case STATE.ST2: ERROR_MSG += "Включаем аттенюатор Тестера и DUT\r\n"; ATT_CONTROL_TESTER(ATTEN); //выключаем аттенюаторы (ATTEN ставить не на максимум!!! так как будет ещё поправка +0..4 Дб) ATT_CONTROL_DUT(ATTEN); //выключаем аттенюаторы TIMER_DELAY = 100; // st = st + 1; PROGRESS = 40; break; case STATE.ST3: //----------TESTER---------------- CMD_REALTIME_SETUP(ref z, DDS_ATT, FREQ, DEV, Timp, duty_cycle); // z.FREQ = FREQ; z.Calibrovka = 1; // CMD_REALTIME_UPDATE(ref z); MASTER.panel_Sint.FUNC_LIST_UPDATE_v2(z, "TESTER"); //----------DUT------------------ CMD_REALTIME_SETUP(ref z, DDS_ATT, FREQ, DEV, Timp, duty_cycle); // z.Calibrovka = 1; //приём на интервале приёма z.Amplitude0 = 100; //давим свой сигнал излучения z.Amplitude1 = 100; z.Amplitude2 = 100; z.Amplitude3 = 100; z.Tblank1 = 100; z.Tblank2 = 25000; z.Ti = 1000;//важно отследить этот момент!!! z.Tp = 1000; CMD_REALTIME_UPDATE(ref z); MASTER.panel_Sint.FUNC_LIST_UPDATE_v2(z, "DUT"); //-------------------------------- TIMER_DELAY = 400; // st = st + 1; PROGRESS = 50; break; case STATE.ST4: MASTER.FILTR_SMOOTH = 3; TIMER_DELAY = 100;// st = st + 1; PROGRESS = 70; break; case STATE.ST5: FLAG_END = true; st = STATE.END; TIMER_DELAY = 100; // PROGRESS = 100; break; } }
public void STATE_NEXT() { CRabcickl z = new CRabcickl(); string error = ""; string msg = ""; int CHANAL = 0; switch (st) { case STATE.START: error += STATE_CONTROL(); if (error != "") { FLAG_END = true; st = STATE.END; MessageBox.Show("Проблема с тестируемой ячейкой!"); break; } SSA_START(); SWITCH_DUT(false); //Включаем ключ в положение - Рабочее textBox_att.Text = TST_Amp_ATT.ToString(); textBox_Dev.Text = TST_DEV.ToString(); textBox_duty.Text = TST_duty_cycle.ToString(); textBox_freq.Text = TST_FREQ.ToString(); textBox_timp.Text = TST_Timp.ToString(); TIMER_DELAY = 400; st = st + 1; FLAG_END = false; break; case STATE.ST1: CMD_REALTIME_SETUP(ref z, TST_FREQ, TST_DEV, TST_Timp, TST_duty_cycle); // z.Calibrovka = 1; //приём ведём на интервале приёма (в данном ТЕСТе вообще не ведём приём) z.Amplitude0 = TST_Amp_ATT; z.Amplitude1 = TST_Amp_ATT; z.Amplitude2 = TST_Amp_ATT; z.Amplitude3 = TST_Amp_ATT; CMD_REALTIME_UPDATE(ref z); MASTER.panel_Sint.FUNC_LIST_UPDATE_v2(z, "DUT"); TIMER_DELAY = 400; st = st + 1; break; case STATE.ST2: SSA.REQ("INIT:CONT OFF;\r\n"); SSA.MRK1_POSITION(MKR1_f); SSA.MRK2_POSITION(MKR2_f); SSA.MRK3_POSITION(MKR3_f); TIMER_DELAY = 10; //500 st = st + 1; break; case STATE.ST3: TIMER_DELAY = 10; // st = st + 1; break; case STATE.ST4: TIMER_DELAY = 10; // st = st + 1; break; case STATE.ST5: TIMER_DELAY = 10; // st = st + 1; break; case STATE.ST6: TIMER_DELAY = 10; // st = st + 1; break; case STATE.Calc: FLAG_END = true; st = STATE.END; break; } }
//этот метод заполняет структуру команды реального времени из данных с панели управления void FUN_LIST_UPDATE(int a) { CRabcickl c0 = new CRabcickl(); //--------Считаем параметры девиации если надо---------- int FLAG_COGERENT = 0; double step = 0; double rate = 1.0 / 96.0; // double rate = (double)c0.FREQ_RATE; //(в мкс) double Timp = Convert.ToDouble(textBox_Ti.Text); double FREQ_DEV = Convert.ToDouble(textBox_dev_FREQ.Text); double N_step = Math.Round(Timp / rate);//расчитываем число шагов для DDS // Console.WriteLine("Timp:"+Timp); // Console.WriteLine("FREQ_DEV:"+FREQ_DEV); // Console.WriteLine("N_step:"+N_step); step = FREQ_DEV / N_step;//расчитываем длинну шага в Гц rate = Math.Round(rate * 1000.0); textBox_FREQ_STEP.Text = step.ToString(); textBox_FREQ_RATE.Text = rate.ToString(); //------------------------------------------------------ c0.FREQ_RATE = Convert.ToUInt32(textBox_FREQ_RATE.Text); c0.Amplitude0 = Convert.ToDouble(textBox_AMP0.Text); c0.Amplitude1 = Convert.ToDouble(textBox_AMP1.Text); c0.Amplitude2 = Convert.ToDouble(textBox_AMP2.Text); c0.Amplitude3 = Convert.ToDouble(textBox_AMP3.Text); c0.I0 = MASTER.b072.I_DAC0; c0.I1 = MASTER.b072.I_DAC0; c0.I2 = MASTER.b072.I_DAC1; c0.I3 = MASTER.b072.I_DAC1; if (checkBox_Calibrovka.IsChecked == true) { c0.Calibrovka = 0; } else { c0.Calibrovka = 1; } if (checkBox_Coherent.IsChecked == true) { c0.Coherent = 1; } else { c0.Coherent = 0; } if (checkBox_SYSREF.IsChecked == true) { c0.SYSREF = 0; } else { c0.SYSREF = 1; //0 - включена синхронизация SYSREF! } c0.DELAY0 = Convert.ToInt16(textBox_DELAY0.Text); c0.DELAY1 = Convert.ToInt16(textBox_DELAY1.Text); c0.DELAY2 = Convert.ToInt16(textBox_DELAY2.Text); c0.DELAY3 = Convert.ToInt16(textBox_DELAY3.Text); c0.deviation = Convert.ToInt64(textBox_dev_FREQ.Text); c0.FREQ = Convert.ToDouble(textBox_FREQ.Text); c0.FREQ_STEP = Convert.ToDouble(textBox_FREQ_STEP.Text); c0.N_cikl = Convert.ToUInt16(textBox_N_intervals.Text);//число интервалов в цикле c0.NUMBER_RECORD = Convert.ToInt32(textBox_Number_record.Text); c0.PHASE0 = Convert.ToInt16(textBox_PHASE0.Text); c0.PHASE1 = Convert.ToInt16(textBox_PHASE1.Text); c0.PHASE2 = Convert.ToInt16(textBox_PHASE2.Text); c0.PHASE3 = Convert.ToInt16(textBox_PHASE3.Text); c0.Tblank1 = Convert.ToUInt32(textBox_Tdop_iz.Text); c0.Tblank2 = Convert.ToUInt32(textBox_Tdop_pr.Text); c0.Ti = Convert.ToUInt32(textBox_Ti.Text); c0.Tp = Convert.ToUInt32(textBox_Tp.Text); if (FLAG_DUTY_CHANGE == 1) { var duty = Convert.ToDouble(textBox_Duty.Text); var period = duty * c0.Ti; c0.Tp = (uint)(period - (double)c0.Tblank1 - (double)c0.Tblank2); textBox_Tp.Text = c0.Tp.ToString(); FLAG_DUTY_CHANGE = 0; } else { var period = (double)(c0.Ti + c0.Tp + c0.Tblank1 + c0.Tblank2); var duty = Math.Round(period / ((double)(c0.Ti)), 2); textBox_Duty.Text = duty.ToString(); } c0.TIME_START = Convert.ToUInt64(textBox_TIME_START.Text); // Console.WriteLine("c0.Calibrovka:" + c0.Calibrovka); c0.TYPE = (ushort)(((c0.Calibrovka & 1) << 1) + (c0.Coherent & 1)); // Console.WriteLine("c0.TYPE:" + c0.TYPE); c0.NUMBER_RECORD = list.Count; textBox_Dlitelnost_cikl.Text = FUN_INTERVAL_CALC(c0).ToString();//рассчитываем длительность текущего цикла if (list.Count > 0) { if (textBox_Number_record.Text != "0") { if (c0.TIME_START < list[(a - 1)].TIME_END) { c0.TIME_START = list[(a - 1)].TIME_END; } // Console.WriteLine("a : " + a); // Console.WriteLine("c0.TIME_START : " + c0.TIME_START); // Console.WriteLine("list[(a-1)].TIME_END :" + list[(a - 1)].TIME_END); } } else { c0.TIME_START = Convert.ToUInt64(textBox_TIME_START.Text); } c0.TIME_END = c0.TIME_START + Convert.ToUInt64(textBox_Dlitelnost_cikl.Text); if (list.Count != 0)//проверяем что в списке есть элементы { list.RemoveAt(a); list.Insert(a, c0); } textBox_TIME_END.Text = c0.TIME_END.ToString(); textBox_TIME_START.Text = c0.TIME_START.ToString(); }