//пересоздаем архив для датчика в канале i public void SaveToArhiv(int i) { if ((Channal.Count <= 0) || (i >= Channal.Count)) { Program.txtlog.WriteLineLog("CH:Отсутсвуют данные ЦАП для датчика в канале: " + i, 1); return; } SChanalCI 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("CH:Данные ЦАП успешно записаны в архив: " + ch.FileNameArchiv, 0); } else { Program.txtlog.WriteLineLog("CH:Ошибка записи в архив данных ЦАП: " + ch.FileNameArchiv, 1); } }
//создаем файл архива на диске private StreamWriter CreateFileArhiv(SChanalCI 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 CResultCI(int ChannalCount, int[] FN) { StreamWriter fs; for (int i = 0; i < ChannalCount; i++) { SChanalCI ch = new SChanalCI(i + 1, FN[i]); Channal.Add(ch); Directory.CreateDirectory("CI"); Directory.CreateDirectory("Archiv/CI"); string filename = string.Format("CI/CI_Result{0}.txt", ch.ChannalNummber); fs = File.CreateText(filename);//создаем файл канала fs.WriteLine(string.Format("Результаты чтения ЦАП датчика в канале {0}, заводской номер {1}", ch.ChannalNummber, ch.FactoryNumber)); fs.WriteLine(HeaderString); fs.Flush(); FileStream.Add(fs); } }
//Добавление записи текущего измрения в архив для датчика в канале ch public void WriteToArhiv(SChanalCI ch, SPointCI point) { StreamWriter writer = null; if (!File.Exists(ch.FileNameArchiv)) { writer = CreateFileArhiv(ch); } else { writer = new StreamWriter(ch.FileNameArchiv, true);//открываем файл БД } if (writer != null) { writer.WriteLine(GetStringFromPoint(point)); writer.Close(); writer = null; } else { Program.txtlog.WriteLineLog("CH:Ошибка записи в архив ЦАП: " + ch.FileNameArchiv, 1); } }
//Чтение из файла public void LoadFromFile() { StreamReader reader; try { for (int i = 0; i < Channal.Count; i++)//перебор каналов { SChanalCI 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('|'); SPointCI point; if (strarr.Length > 3) { point.Datetime = Convert.ToDateTime(strarr[0]); point.Temperature = double.Parse(strarr[1].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture); point.I4 = double.Parse(strarr[2].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture); point.I20 = double.Parse(strarr[3].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture); /* * point.Temperature = Convert.ToDouble(strarr[1]); * point.I4 = Convert.ToDouble(strarr[2]); * point.I20 = Convert.ToDouble(strarr[3]); */ ch.Points.Add(point); } } while (!reader.EndOfStream); Program.txtlog.WriteLineLog("CI:Архив данных ЦАП загружен из файла: " + ch.FileNameArchiv, 0); reader.Close(); reader = null; } else { Program.txtlog.WriteLineLog("CI:Ошибка доступа к архиву данных ЦАП: " + ch.FileNameArchiv, 1); continue; } } } catch { Program.txtlog.WriteLineLog("CI:Критическая ошибка чтения архива ЦАП!", 1); } }