/// <summary> /// Расчет темпа и запись результата в БД /// </summary> /// public virtual void TempPacetov() { //if (Conect300Statys) // { ТемпПакетов = Convert.ToInt32(КолПакетов) - Пакетов; Пакетов = Convert.ToInt32(КолПакетов); ТемпПакетовN = Convert.ToInt32(КолПакетовN) - ПакетовN; ПакетовN = Convert.ToInt32(КолПакетовN); try { BDReadTemP(NameBAAK12, ТемпПакетов); } catch { } try { // Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { MyGrafic.AddPoint(Nkl, ТемпПакетов); })); lock (MyGrafic.Labels) { MyGrafic.AddPoint(Nkl, ТемпПакетов, ТемпПакетовN); // Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Render, new Action(() => { MyGrafic.AddPoint(Nkl, ТемпПакетов, ТемпПакетовN); })); } } catch { } // } }
/// <summary> /// Читает данные с платы и пишет их в очередь, считаем количество пакетов /// </summary> public virtual void ReadData()//Читает данные с платы и пишет их в очередь { try { if (clientBAAK12TData.Connected && nsData != null) { int res = Read13007(out byte[] buf);//читаем с платы if (nsData == null) { Brushes = System.Windows.Media.Brushes.Red; CтатусБААК12 = "nsData = null"; } if (res > 0) { for (int i = 0; i < res; i++) { if (buf[i] == 0xFF) { CountFlagEnd++; } else { CountFlagEnd = 0; } DataBAAKList.Add(buf[i]); if ((data_w != null) & (data_fs != null) & CountFlagEnd == 4) { if (DataBAAKList.ElementAt(DataBAAKList.Count - 4) == 0xFF && DataBAAKList.ElementAt(DataBAAKList.Count - 5) == 0xFF && DataBAAKList.ElementAt(DataBAAKList.Count - 6) == 0xFF && DataBAAKList.ElementAt(DataBAAKList.Count - 7) == 0xFF) { КолПакетовEr++; //DataBAAKList.Clear(); } else { КолПакетов++; OcherediNaZapic.Enqueue(new DataYu { ListData = DataBAAKList, tipDataTest = Flagtest }); if (!Flagtest) { Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Render, new Action(() => { MyGrafic.AddTecPoint(Nkl, ТемпПакетов = Convert.ToInt32(КолПакетов) - Пакетов); })); } } DataBAAKList = new List <byte>(); CountFlagEnd = 0; } else { if (data_w == null) { Brushes = System.Windows.Media.Brushes.Red; CтатусБААК12 = "data_w = null"; } if (data_fs == null) { Brushes = System.Windows.Media.Brushes.Red; CтатусБААК12 = "data_fs = null"; } } } } if (res == -2) { Brushes = System.Windows.Media.Brushes.Red; CтатусБААК12 = nsData.CanRead.ToString() + nsData.ToString(); InDe(false); } } else { Brushes = System.Windows.Media.Brushes.Red; CтатусБААК12 = "Ошибка 1 чтения с платы. Отключена"; InDe(false); } } catch (NullReferenceException ee) { Debug.WriteLine("Error 939"); } catch (Exception) { Brushes = System.Windows.Media.Brushes.Red; CтатусБААК12 = "Ошибка 2 чтения с платы. Отключена"; InDe(false); } }
private void Obrabotka(List <Byte> buf00, out int[] Amp, out string time, out int[] nn1, out double[] Nul, out double[] sig, bool testT, out bool bad) { int[,] data = new int[12, 1024]; int[,] dataTail = new int[12, 20000]; sig = new Double[12]; Nul = new double[12]; time = "0"; nn1 = new int[12]; Amp = new int[12]; bad = false; try { // byte[] bb = new byte[buf00.Count]; //bb = buf00.ToArray(); ParserBAAK12.ParseBinFileBAAK12.ParseBinFileBAAK200H(buf00.ToArray(), out data, out time, out dataTail); // Amp = new int[12]; // Nul = new int[12]; // sig = new Double[12]; try { if (grafOtob) { // Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(() => // { Application.Current.Dispatcher.Invoke((Action) delegate { MyGrafic.AddPointRaz(data, "Кластер" + namKl, masnul); }); // })); } if (windowChart != null && !testT) { // Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(() => // { Application.Current.Dispatcher.Invoke((Action) delegate { windowChart.AddPointRaz(data); }); // })); } if (windowChartTail != null && !testT) { //Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(() => // { Application.Current.Dispatcher.Invoke((Action) delegate { windowChartTail.AddPointRaz(dataTail); }); // })); } } catch (NullReferenceException ee) { Debug.WriteLine("Error 708"); } catch (Exception ex) { File.AppendAllText("D:\\Erroy_URAN_file.txt", "Ошибка графика" + ex.Message.ToString() + "\n" + "otobKl " + otobKl + "\t" + "NamKl " + NamKl); //допишет текст в конец файла } if (!testT) { ParserBAAK12.ParseBinFileBAAK12.MaxAmpAndNul(data, ref sig, ref Amp, ref Nul, ref bad, true, 1, 6); // MaxAmpAndNul(data, out Amp, out Nul, out sig); // MessageBox.Show(Nul.ToString()+" "+ dataTail[3, 100]+" " + dataTail[3, 101] + " " + dataTail[3, 102] + " " + dataTail[3, 103] + " " + dataTail[3, 104] + " " + dataTail[3, 105] + " " + dataTail[3, 106] + " "); // nn1 = new int[12]; Neutron(dataTail, BAAK12T.PorogNutron, BAAK12T.DlNutron, out nn1, time, testT, Nul, bad); } } catch (NullReferenceException ee) { // File.AppendAllText("D:\\Erroy_URAN_file.txt", "Error 723" + "\n"); //допишет текст в конец файла } catch (Exception ex) { // File.AppendAllText("D:\\Erroy_URAN_file.txt", "Ошибка обработки данных" + ex.Message.ToString() + "\n" + "Время " + time + "\n"); //допишет текст в конец файла } }
/// <summary> /// записываем данные из очереди в файл и в бд /// </summary> public virtual void WriteInFileIzOcheredi()//работа с данными из очереди { try { dataYu = new DataYu(); bool?ed = OcherediNaZapic?.TryDequeue(out dataYu); if (ed == true) { if (dataYu.ListData != null) { byte[] d = new byte[dataYu.ListData.Count]; int x = 0; foreach (Byte b in dataYu.ListData) { d[x] = b; x++; } if (FlagSaveBin) { if (data_w != null) { data_w.Write(d); } } if (UserSetting.FlagOtbor) { int[] coutN = new int[12]; Double[] sigm = new double[12]; if (BAAKTAIL) { Obrabotka(dataYu.ListData, out int[] Ampl, out string time1, out coutN, out double[] NL, out sigm, dataYu.tipDataTest, out bool bad);//парсинг данных КолПакетовN += coutN.Sum(); Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Render, new Action(() => { MyGrafic.AddTecPointN(Nkl, Convert.ToInt32(КолПакетовN) - ПакетовN); })); if (!dataYu.tipDataTest) { OcherediNaZapicBD.Enqueue(new ClassZapicBD() { tipDataTest = dataYu.tipDataTest, tipDataSob = true, nameFileBD = NameFileClose, nameBAAKBD = NameBAAK12, timeBD = time1, nameRanBD = BAAK12T.NameRan, AmpBD = Ampl, nameklasterBD = NamKl, NnutBD = coutN, NlBD = NL, sigBDnew = sigm, bad = bad }); } } } КолПакетовОчер++; DataBAAKList1 = null; d = null; } } } catch (InvalidOperationException) { } catch (NullReferenceException ee) { Debug.WriteLine("Error 656"); } catch (Exception e) { Brushes = System.Windows.Media.Brushes.Red; CтатусБААК12 = "Ошибка. Отключена " + e; InDe(false); } }
private void Obrabotka(List <Byte> buf00, out int[] Amp, out double[] Nul, int dl, out int dn, out bool neutron, ref ClassZapicBD100 classZapicBD100) { int[,] data = new int[12, 1024 * dl]; Nul = new double[12]; dn = 0; neutron = false; bool bad = false; Amp = new int[12]; int[] coutN1 = new int[12]; int[] timeS = new int[12]; try { ParserBAAK12.ParseBinFileBAAK12.ParseBinFileBAAK200(buf00.ToArray(), dl, out data, out classZapicBD100.timeBD); if (grafOtob) { // Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(() => // { Application.Current.Dispatcher.Invoke((Action) delegate { MyGrafic.AddPointRaz(data, "Кластер" + namKl, masnul); }); // })); } if (windowChart != null) { // Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(() => // { Application.Current.Dispatcher.Invoke((Action) delegate { windowChart.AddPointRaz(data); }); // })); } // To Do ParserBAAK12.ParseBinFileBAAK12.MaxAmpAndNul(data, ref classZapicBD100.sig, ref Amp, ref Nul, ref bad, false, 0.6, 5); ObrabotcaURAN.Obrabotca.AmpAndTime(data, Nul, out classZapicBD100.TmaxACh, out classZapicBD100.Amp); classZapicBD100.TfACh = ObrabotcaURAN.Obrabotca.FirstTme(classZapicBD100.TmaxACh, classZapicBD100.Amp, data, Nul, ref classZapicBD100.TpmA, out classZapicBD100.TA34Ch, out classZapicBD100.TA14Ch); classZapicBD100.SCh = ObrabotcaURAN.Obrabotca.ColSigVatias(data, Nul); classZapicBD100.SBCh = ObrabotcaURAN.Obrabotca.ColBin(data, Nul); for (int i = 0; i < 12; i++) { int x = 0; for (int j = 350; j < 1024; j++) { // Debug.WriteLine(data1[i, j].ToString()); //Debug.WriteLine(data1[i, j].ToString() +"-"+ Nul[i].ToString()); // data1S[i, j] = Convert.ToDouble(data1[i, j]) - Nul[i]; int AN = data[i, j] - Convert.ToInt32(Nul[i]); if (AN > 5) { classZapicBD100.SumD[i] += AN; } } } } catch (Exception) { } }