private void Button_Click_1(object sender, RoutedEventArgs e)
 {
     str_bt.IsEnabled = true;
     comport.Close();//закрыть порт
     comport.DataReceived -= new SerialDataReceivedEventHandler(port_DataReceived);
     lock (KEY_lock)
     {
         KEY_lock = "0";
     }
     ClassTextFile.CloseFileData();
 }
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         str_bt.IsEnabled = false;
         yBar             = new double[255];
         comport.PortName = "COM" + NamePort.Text;                                      //номер порта
         comport.BaudRate = Convert.ToInt16(SpeedPort.Text);                            //скорость порта
         comport.Open();                                                                //открыть порт
         comport.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); //подписаться на чтение порта
         Start_time            = DateTime.Now;
         ClassTextFile.CreatFileData(PathText.Text + Start_time.Year.ToString() + "_" + Start_time.Month.ToString() + "_" + Start_time.Day.ToString() + "_" + Start_time.Hour.ToString() + "_" + Start_time.Minute.ToString());
         lock (KEY_lock)
         {
             KEY_lock = "1";
         }
         Task.Run(() => Update_Scr());
     }
     catch (Exception exp) { MessageBox.Show(exp.Message); }
 }
        private void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            // прочитали строку
            if (comport.BytesToRead > 99)
            {
                byte[] buf       = new byte[100];
                int    countByte = comport.Read(buf, 0, 100);

                //  MessageBox.Show(dataR);

                if (countByte > 0)
                {
                    byte[] bufcount = new byte[countByte];
                    // MessageBox.Show("FFF");
                    //ToDo сохраняем в файл строку
                    try
                    {
                        //обрабатываем данные, определяем нейтрон, считаем темп счета


                        _Max_Ampl = buf.Max() - 170;
                        if (_Max_Ampl > 0)
                        {
                            // MessageBox.Show(_Max_Ampl.ToString());
                            _Total_Count++;
                            Tab.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => //использую инвок для вызова перерисовки из не родного потока
                            {
                                if (buf.Max() >= Convert.ToInt32(TextPorog.Text))             //если максимальное значение больше или равно порогу, то строим график
                                {
                                    // linegraph.Children.Clear();

                                    if (Tab.SelectedIndex == 1)//если выбрана вкладка "Развертка", то строим график
                                    {
                                        try
                                        {
                                            int[] x = new int[buf.Length];//точки по x
                                            for (int i = 0; i < buf.Length; i++)
                                            {
                                                x[i] = i;
                                            }


                                            linegraph.Plot(x, buf); //строим график

                                            /*  double[] y1 = new double[x.Length];
                                             * ClassFilterSig.Dacc = Data[0];
                                             * ClassFilterSig.Dout= Data[0];
                                             * for (int i = 0; i < x.Length; i++)
                                             * {
                                             *
                                             *
                                             *
                                             *    y1[i] = ClassFilterSig.Filtr(Data[i], t);
                                             *
                                             *
                                             *
                                             *
                                             * }
                                             * // var lg1 = new LineGraph();
                                             *
                                             * //  linegraph.Children.Add(lg1);
                                             *
                                             * //  lg1.Stroke = new SolidColorBrush(Color.FromArgb(255, 225, 0, 255));
                                             * // lg1.Description = String.Format("SigIntegral");
                                             * //  lg1.StrokeThickness = 2;
                                             * //   lg1.Plot(x, y1);
                                             */
                                        }
                                        catch (Exception ex) { MessageBox.Show("ошибка " + ex.Message); }
                                    }
                                }



                                ClassTextFile.WriteFileData(DateTime.Now.ToString() + "\t" + _Max_Ampl.ToString());
                            }));
                            Count_total.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => { Count_total.Content = _Total_Count.ToString(); }));
                            Max_Ampl.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => { Max_Ampl.Content = _Max_Ampl.ToString(); }));
                            yBar[buf.Max()]++;
                            barChart.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => { barChart.PlotBars(yBar); }));

                            dataR = String.Empty;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                }
            }

            // Display the text to the user in the terminal
        }