Example #1
0
        public void LoadFromBinary()
        {
            try
            {
                for (int i = 0; i < Channal.Count; i++)//перебор каналов
                {
                    SChanal ch = Channal[i];
                    if (!File.Exists(ch.FileNameArchiv))
                    {
                        continue;
                    }
                    BinaryReader reader = new BinaryReader(File.Open(ch.FileNameArchiv, FileMode.Open));
                    if (reader != null)
                    {
                        ch.FactoryNumber  = reader.ReadInt32();
                        ch.ChannalNummber = reader.ReadInt32();
                        int Count = reader.ReadInt32();
                        for (int j = 0; j < Count; j++)//перебор точек измерения для датчика
                        {
                            SPoint point;
                            point.Datetime    = DateTime.FromBinary(reader.ReadInt64());
                            point.Temperature = reader.ReadDouble();
                            point.Diapazon    = reader.ReadInt32();
                            point.Pressure    = reader.ReadDouble();
                            point.OutVoltage  = reader.ReadDouble();
                            point.OutVoltage  = reader.ReadDouble();
                            point.Resistance  = reader.ReadDouble();
                            point.Deviation   = reader.ReadDouble();
                            ch.Points.Add(point);
                        }
                        Count = reader.ReadInt32();
                        for (int c = 0; c < Count - 1; c++)
                        {
                            ch.Coefficient[c] = reader.ReadSingle();
                        }

                        reader.Close();
                        Program.txtlog.WriteLineLog("CH:Архив данных характеризации загружен из файла: " + ch.FileNameArchiv, 0);
                    }
                    else
                    {
                        Program.txtlog.WriteLineLog("CH:Ошибка доступа к архиву данных характеризации: " + ch.FileNameArchiv, 1);
                    }
                }
            }
            catch
            {
                Program.txtlog.WriteLineLog("CH:Критическая ошибка чтения архива характеризации!", 1);
            }
        }
Example #2
0
        //создаем файл  архива на диске
        private StreamWriter CreateFileArhiv(SChanal ch)
        {
            StreamWriter writer = null;

            writer = File.CreateText(ch.FileNameArchiv);//создаем файл БД
            if (writer != null)
            {
                writer.WriteLine(string.Format("Архив данных характеризации датчика"));
                writer.WriteLine(string.Format("Канал:{0}; Заводской номер:{1}; Тип:{2}; Модель:{3}", ch.ChannalNummber, ch.FactoryNumber, ch.GetSensorType(), ch.GetSensorModel()));
                writer.WriteLine("-----------------------------------------------------------------------------------------------");
                writer.WriteLine(HeaderString);
                writer.WriteLine("-----------------------------------------------------------------------------------------------");
            }
            return(writer);
        }
Example #3
0
        //конструктор класса
        //вход: число каналов и заводской номер датчика в каждом канале
        public СResultCH(int ChannalCount, int[] FN, int CoefCount, byte[] Type, string[] Model)
        {
            StreamWriter fs;

            for (int i = 0; i < ChannalCount; i++)
            {
                SChanal ch = new SChanal(i + 1, FN[i], CoefCount, Type[i], Model[i]);
                Channal.Add(ch);
                Directory.CreateDirectory("CH");
                Directory.CreateDirectory("Archiv");
                Directory.CreateDirectory("Archiv/CH");
                string filename = string.Format("CH/CH_Result{0}.txt", ch.ChannalNummber);
                fs = File.CreateText(filename);//создаем файл канала
                //fs.WriteLine(string.Format("Результаты характеризации датчика в канале {0}, заводской номер {1}", ch.ChannalNummber, ch.FactoryNumber));
                fs.WriteLine(string.Format("Результаты характеризации датчика в канале:{0}; Заводской номер:{1}; Тип:{2}; Модель:{3}", ch.ChannalNummber, ch.FactoryNumber, ch.GetSensorType(), ch.GetSensorModel()));
                fs.WriteLine(HeaderString);
                fs.Flush();
                FileStream.Add(fs);
            }
        }
Example #4
0
        //пересоздаем архив для датчика в канале i
        public void SaveToBinary(int i)
        {
            if ((Channal.Count <= 0) || (i >= Channal.Count))
            {
                Program.txtlog.WriteLineLog("CH: Отсутсвуют данные характеризации для датчика в канале: " + i, 1);
                return;
            }
            SChanal      ch     = Channal[i];
            BinaryWriter writer = CreateFileBinary(ch);

            if (writer != null)
            {
                writer.Write(ch.Points.Count);
                for (int j = 0; j < ch.Points.Count; j++)//перебор точек измерения для датчика
                {
                    writer.Write(ch.Points[j].Datetime.ToBinary());
                    writer.Write(ch.Points[j].Temperature);
                    writer.Write(ch.Points[j].Diapazon);
                    writer.Write(ch.Points[j].Pressure);
                    writer.Write(ch.Points[j].OutVoltage);
                    writer.Write(ch.Points[j].Resistance);
                    writer.Write(ch.Points[j].Deviation);
                }
                if (ch.Coefficient[0] != 0)//если коэффициенты подсчитаны
                {
                    writer.Write(ch.CCount);
                    for (int c = 0; c < ch.CCount - 1; c++)
                    {
                        writer.Write(ch.Coefficient[c]);
                    }
                }
                writer.Close();
                writer = null;
                Program.txtlog.WriteLineLog("CH: Данные характеризации успешно перезаписаны.", 0);
            }
            else
            {
                Program.txtlog.WriteLineLog("CH: Ошибка записи в архив  характеризации: " + ch.FileNameArchiv, 1);
            }
        }
Example #5
0
        //Чтение архивов из файлов
        public void LoadFromFile()
        {
            StreamReader reader;

            try
            {
                for (int i = 0; i < Channal.Count; i++)//перебор каналов
                {
                    SChanal 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();
                            if (str == "-----------------------------------------------------------------------------------------------")
                            {
                                break;                                                                                                          //конец раздела
                            }
                            string[] strarr = str.Split('|');
                            SPoint   point;
                            if (strarr.Length > 5)
                            {
                                point.Datetime    = Convert.ToDateTime(strarr[0]);
                                point.Temperature = double.Parse(strarr[1].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture);
                                point.Diapazon    = Convert.ToInt32(strarr[2]);
                                point.Pressure    = double.Parse(strarr[3].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture);
                                point.OutVoltage  = double.Parse(strarr[4].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture);
                                point.Resistance  = double.Parse(strarr[5].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture);
                                if (strarr.Length > 6)
                                {
                                    point.Deviation = double.Parse(strarr[6].Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator), CultureInfo.InvariantCulture);
                                }
                                else
                                {
                                    point.Deviation = 0;
                                }
                                ch.Points.Add(point);
                            }
                        } while (!reader.EndOfStream);
                        Program.txtlog.WriteLineLog("CH:Архив данных характеризации загружен из файла: " + ch.FileNameArchiv, 0);

                        reader.Close();
                        reader = null;
                    }
                    else
                    {
                        Program.txtlog.WriteLineLog("CH:Ошибка доступа к архиву данных характеризации: " + ch.FileNameArchiv, 1);
                        continue;
                    }
                }
            }
            catch
            {
                Program.txtlog.WriteLineLog("CH:Критическая ошибка чтения архива характеризации!", 1);
            }
        }