//Добавление записи текущего измерения в архив для датчика в канале ch public void WriteToArhiv(SChanalMET ch, SPointMET point) { StreamWriter writer = null; if (!File.Exists(ch.FileNameArchiv)) { writer = CreateFileArhiv(ch); } else { writer = new StreamWriter(ch.FileNameArchiv, true);//открываем файл БД } if (writer != null) { // if (ch.Points.Count > 0) // writer.WriteLine(GetStringFromPoint(ch.Points[ch.Points.Count - 1])); writer.WriteLine(GetStringFromPoint(point)); writer.Close(); writer = null; } else { Program.txtlog.WriteLineLog("MET:Ошибка записи в архив: " + ch.FileNameArchiv, 1); } }
//пересоздаем архив для датчика в канале i public void SaveToArhiv(int i) { if ((Channal.Count <= 0) || (i >= Channal.Count)) { Program.txtlog.WriteLineLog("MET:Отсутсвуют данные для датчика в канале: " + i, 1); return; } SChanalMET ch = Channal[i]; StreamWriter writer = CreateFileArhiv(ch); if (writer != null) { for (int j = 0; j < ch.Points.Count; j++)//перебор точек измерения для датчика { writer.WriteLine(GetStringFromPoint(ch.Points[j])); } writer.Close(); writer = null; Program.txtlog.WriteLineLog("MET:Данные успешно перезаписаны.", 0); } else { Program.txtlog.WriteLineLog("MET:Ошибка записи в файл данных: " + ch.FileNameArchiv, 1); } }
//Чтение из файла public void LoadFromFile() { StreamReader reader; try { for (int i = 0; i < Channal.Count; i++)//перебор каналов { SChanalMET ch = Channal[i]; if (!File.Exists(ch.FileNameArchiv)) { continue; } else { reader = new StreamReader(ch.FileNameArchiv);//открываем файл БД } if (reader != null) { string str = reader.ReadLine(); str = reader.ReadLine(); str = reader.ReadLine(); str = reader.ReadLine(); str = reader.ReadLine(); do { str = reader.ReadLine(); string[] strarr = str.Split('|'); SPointMET point; if (strarr.Length > 7) { point.Datetime = Convert.ToDateTime(strarr[0]); point.Temperature = double.Parse(strarr[1].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture); point.NPI = double.Parse(strarr[2].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture); point.VPI = double.Parse(strarr[3].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture); point.PressureZ = double.Parse(strarr[4].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture); point.PressureF = double.Parse(strarr[5].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture); point.CurrentR = double.Parse(strarr[6].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture); point.CurrentF = double.Parse(strarr[7].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture); ch.Points.Add(point); } } while (!reader.EndOfStream); Program.txtlog.WriteLineLog("MET:Архив данных загружен из файла: " + ch.FileNameArchiv, 0); reader.Close(); reader = null; } else { Program.txtlog.WriteLineLog("MET:Ошибка доступа к файлу архива: " + ch.FileNameArchiv, 1); continue; } } } catch { Program.txtlog.WriteLineLog("MET:Критическая ошибка чтения архива!", 1); } }
//создаем файл архива на диске private StreamWriter CreateFileArhiv(SChanalMET ch) { StreamWriter writer = null; writer = File.CreateText(ch.FileNameArchiv);//создаем файл БД if (writer != null) { writer.WriteLine(string.Format("Архив данных датчика")); writer.WriteLine(string.Format("Канал:{0}; Заводской номер:{1}", ch.ChannalNummber, ch.FactoryNumber)); writer.WriteLine("-----------------------------------------------------------------------------------------------"); writer.WriteLine(HeaderString); writer.WriteLine("-----------------------------------------------------------------------------------------------"); } return(writer); }
//конструктор класса //вход: число каналов и заводской номер датчика в каждом канале public CResultMET(int ChannalCount, int[] FN) { StreamWriter fs; for (int i = 0; i < ChannalCount; i++) { SChanalMET ch = new SChanalMET(i + 1, FN[i]); Channal.Add(ch); Directory.CreateDirectory("MET"); Directory.CreateDirectory("Archiv/MET"); string filename = string.Format("MET/MET_Result{0}.txt", ch.ChannalNummber); fs = File.CreateText(filename);//создаем файл канала fs.WriteLine(string.Format("Результаты измерений датчика в канале {0}, заводской номер {1}", ch.ChannalNummber, ch.FactoryNumber)); fs.WriteLine("-----------------------------------------------------------------------------------------------------------------------------"); fs.WriteLine(HeaderString); fs.WriteLine("-----------------------------------------------------------------------------------------------------------------------------"); fs.Flush(); FileStream.Add(fs); } }