コード例 #1
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            using (var rec = new RecDao(Different.GetInfoTaskDir() + @"General\Config.accdb",
                                        "SELECT SysSubTabl.SubParamRowSource FROM SysTabl INNER JOIN SysSubTabl ON SysTabl.ParamId = SysSubTabl.ParamId " +
                                        "WHERE ((SysTabl.ParamValue='Приемник') AND (SysSubTabl.SubParamName='OPCServerName'));"))
                while (rec.Read())
                {
                    var set = rec.GetString("SubParamRowSource").ToPropertyHashSet();
                    foreach (var s in set.Values)
                    {
                        if (!OpcServerName.Items.Contains(s))
                        {
                            OpcServerName.Items.Add(s);
                        }
                    }
                }
            OpcServerName.Items.Add("Matrikon.OPC.Simulation.1");

            using (var sys = new SysTabl(Different.GetInfoTaskDir() + @"Controller\ControllerData.accdb"))
            {
                OpcServerName.Text = sys.SubValue("DebugWriteOPC", "OpcServerName");
                Node.Text          = sys.SubValue("DebugWriteOPC", "Node");
                OpcTag.Text        = sys.SubValue("DebugWriteOPC", "OpcTag");
                DataType.Text      = sys.SubValue("DebugWriteOPC", "DataType");
                TagValue.Text      = sys.SubValue("DebugWriteOPC", "TagValue");
            }
        }
コード例 #2
0
        //Открытие соединения
        protected override bool Connect()
        {
            using (var sys = new SysTabl(CommDataFile))
            {
                _mainArchive.SuccessTime    = sys.SubValue("SourceInfo", "MainArchiveSuccessTime").ToDateTime();
                _reserveArchive.SuccessTime = sys.SubValue("SourceInfo", "ReserveArchiveSuccessTime").ToDateTime();
            }
            var archives = new SimaticArchive[2];
            int b        = _reserveArchive.SuccessTime > _mainArchive.SuccessTime ? 0 : 1;

            archives[b]     = _reserveArchive;
            archives[1 - b] = _mainArchive;
            for (int iter = 1; iter <= 2; iter++)
            {
                if (IsConnected)
                {
                    Disconnect();
                }
                foreach (var ar in archives)
                {
                    Logger.AddEvent((iter == 1 ? "Соединение" : "Повторное соединение") + " с архивом", ar.IsReserve ? "Резервный" : "Основной");
                    var con = ar.Connnect();
                    if (con != null && con.State == ConnectionState.Open)
                    {
                        _conn = con;
                        SysTabl.PutSubValueS(CommDataFile, "SourceInfo", (ar.IsReserve ? "Reserve" : "Main") + "ArchiveSuccessTime", DateTime.Now.ToString());
                        return(IsConnected = true);
                    }
                }
                Thread.Sleep(30);
            }
            Logger.AddError("Не удалось соединиться ни с основным, не с резервным сервером архива");
            return(IsConnected = false);
        }
コード例 #3
0
        //Загрузить проект projectFile, compileDir - каталог для компиляции
        public string LoadProject(string projectFile)
        {
            StartAtom(Atom.LoadProject, true, projectFile);
            CountsToZero();
            if (State == State.Closed)
            {
                AddError("Копилятор уже был закрыт");
            }
            else
            {
                try
                {
                    if (!DaoDb.Check(projectFile, new[] { "CalcParams", "CalcSubParams", "CalcParamsArchive", "Objects", "Signals", "SignalsInUse", "GraficsList", "GraficsValues" }))
                    {
                        AddError("Указан неправильный файл проекта", null, projectFile);
                    }
                    else
                    {
                        using (var db = new DaoDb(projectFile))
                        {
                            using (var rec = new RecDao(db, "SELECT * FROM Providers WHERE (ProviderCode='HandInputSource') OR (ProviderCode='HandInputSqlSource')"))
                                if (rec.HasRows())
                                {
                                    HandInputSource = rec.GetString("ProviderName");
                                }
                            using (var sys = new SysTabl(db))
                            {
                                _code = sys.SubValue("ProjectInfo", "Project");
                                _name = sys.SubValue("ProjectInfo", "ProjectName");
                                sys.PutSubValue("ProjectInfo", "HandInputSource", HandInputSource);

                                //ab
                                _objectsFile = sys.Value("ObjectsFile");
                                if (string.IsNullOrEmpty(_objectsFile))
                                {
                                    _objectsFile = projectFile;
                                }
                                if (_objectsFile != projectFile)
                                {
                                    if (!DaoDb.Check(projectFile, new[] { "CalcParams", "CalcSubParams", "CalcParamsArchive", "Objects", "Signals", "SignalsInUse", "GraficsList", "GraficsValues" }))
                                    {
                                        AddError("В проекте указан неправильный файл списка объектов", null, projectFile);
                                        _objectsFile = projectFile;
                                    }
                                }
                                //\ab
                            }
                        }
                        _projectFile = projectFile;
                    }
                }
                catch (Exception ex)
                {
                    AddError("Указан неправильный файл проекта", ex, projectFile);
                }
            }
            return(FinishAtom(State.Project, State.Empty, "Проект:" + _code + ", " + _name));
        }
コード例 #4
0
        //Чтение списка сигналов из клона
        private void PrepareForClone(string cloneFile)
        {
            try
            {
                AddEvent("Чтение свойств клона");
                if (!DaoDb.Check(cloneFile, new[] { "Objects", "Signals", "MomentsValues" }))
                {
                    AddError("Недопустимый файл клона");
                }
                else
                {
                    using (var db = new DaoDb(cloneFile))
                    {
                        using (var sys = new SysTabl(db))
                        {
                            if (_form != null)
                            {
                                _form.CalcName.Text = sys.Value("CloneDescription");
                            }
                            _cloneInf = sys.Value("CloneInf");
                            RunSource(sys.SubValue("Source", "ProviderCode"), sys.SubValue("Source", "ProviderName"), sys.SubValue("Source", "ProviderInf"));
                        }

                        AddEvent("Чтение списка сигналов клона");
                        _source.ClearSignals();
                        int n = 0;
                        using (var rec = new RecDao(db, "SELECT SignalId, FullCode, DataType, Inf FROM Signals WHERE ConstValue Is Null"))
                            while (rec.Read())
                            {
                                _source.AddSignal(rec.GetString("Inf"), rec.GetString("FullCode"), rec.GetString("DataType").ToDataType(), rec.GetInt("SignalId"));
                                n++;
                            }
                        AddEvent("Сигналы клона прочитаны", n + " сигналов");

                        //db.Execute("DELETE * FROM MomentsValues");
                        //db.Execute("DELETE * FROM Intervals");
                        using (var rec = new RecDao(db, "Intervals"))
                        {
                            rec.AddNew();
                            rec.Put("TimeBegin", _timeBegin);
                            rec.Put("TimeEnd", _timeEnd);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                AddError("Ошибка при подготовке клона", ex);
            }
        }
コード例 #5
0
 public ThreadController(IRecordRead rec)
 {
     using (var c = Start())
     {
         Id              = rec.GetInt("ThreadId");
         ThreadName      = Id.ToString();
         ApplicationType = ApplicationType.Controller;
         OpenHistory(General.ControllerDir + @"History\History" + Id + ".accdb", General.HistryTemplateFile, true);
         PrepareResultFile();
         using (StartAtom(Atom.OpenThread))
         {
             try
             {
                 AddEvent("Чтение списка функций");
                 ReadFunctions();
                 AddEvent("Чтение свойств потока");
                 Comment         = rec.GetString("Comment");
                 IsPeriodic      = rec.GetBool("IsPeriodic");
                 CalcType        = IsPeriodic ? "Периодический" : "Разовый";
                 PeriodLength    = rec.GetDouble("PeriodLength", 15);
                 SourcesLate     = rec.GetDouble("SourcesLate", 2);
                 RushWaitingTime = rec.GetDouble("RushWaitingTime");
                 TimeAfterError  = rec.GetDouble("TimeAfterError", 5);
                 IsImit          = rec.GetBool("IsImit");
                 ImitModeStr     = rec.GetString("ImitMode");
                 using (var sys = new SysTabl(ResultFile))
                 {
                     PeriodBegin    = sys.SubValue("PeriodInfo", "PeriodBegin").ToDateTime();
                     PeriodEnd      = sys.SubValue("PeriodInfo", "PeriodEnd").ToDateTime();
                     CalcName       = sys.SubValue("PeriodInfo", "CalcName");
                     StartMoment    = sys.SubValue("PeriodInfo", "StartMoment").ToDateTime();
                     StartTime      = sys.SubValue("PeriodInfo", "StartTime").ToDateTime();
                     StopTime       = sys.SubValue("PeriodInfo", "StopTime").ToDateTime();
                     IsStopTime     = sys.SubValue("PeriodInfo", "IsStopTime") == "True";
                     _lastErrorText = sys.SubValue("LastErrorInfo", "ErrorText");
                     _lastErrorTime = sys.SubValue("LastErrorInfo", "ErrorPeriodBegin").ToDateTime();
                     _lastErrorPos  = 0;
                     UpdateTablo();
                 }
                 _state = State.Stopped;
             }
             catch (Exception ex)
             {
                 AddError("Ошибка загрузки потока", ex);
             }
         }
         StartAtom(Atom.ReadSetup, ReadSetup);
         IsClosed = false;
         if (c.IsError)
         {
             Different.MessageError("Ошибка загрузки данных потока расчета. " + c.ErrorMessage());
         }
     }
 }
コード例 #6
0
 private void FormGroupReports_Load(object sender, EventArgs e)
 {
     using (var db = new DaoDb(General.ReporterFile))
     {
         using (var sys = new SysTabl(db))
         {
             BeginPeriod.Text = sys.SubValue("FormGroupReports", "BeginPeriod");
             EndPeriod.Text   = sys.SubValue("FormGroupReports", "EndPeriod");
         }
         using (var rec = new RecDao(db, "SELECT * FROM GroupReports ORDER BY GroupCode"))
             while (rec.Read())
             {
                 EditItem(rec);
             }
     }
 }
コード例 #7
0
 private void Window_Loaded(object sender, RoutedEventArgs e)
 {
     try
     {
         using (var sys = new SysTabl(General.ConfigFile))
             AppVersion.Text = sys.SubValue("InfoTask", "AppVersion");
         var dbv = new DbVersion();
         AppUserOrg.Text    = dbv.AUser("Controller");
         LicenseNumber.Text = dbv.ANumber("Controller");
     }
     catch { }
 }
コード例 #8
0
        //Отображает данные для указанного типа приложения app = Excel2007 или Excel2010
        public void PutInfo(string app)
        {
            ProgrammInfo.Text = app == "Excel2010"
                ? "Построитель отчетов для Excel 2010 (ReporterExcel2010)"
                : "Построитель отчетов для Excel 2007 (ReporterExcel2007)";
            using (var sys = new SysTabl(General.ConfigFile))
            {
                AppVersion.Text = sys.SubValue("InfoTask", "AppVersion");
            }
            var dbv = new DbVersion();

            AppUserOrg.Text    = dbv.AUser("Excel");
            LicenseNumber.Text = dbv.ANumber("Excel");
            Refresh();
        }
コード例 #9
0
        //Сравниваем версии базы данных и текущего ПО
        //Возвращает: -1 - ошибка, 0 - версии одинаковы, 1 - нужно обновлять, страые версии ПО совместимы, 2 - старые версии ПО не совместимы
        private int VersionStatus(string dbPath, DbMode dbMode)
        {
            try
            {
                PrepareDelegates(dbMode);
                if (_delegates.Count == 0)
                {
                    return(0);
                }
                using (var sys = new SysTabl(dbPath))
                    _dbVersion = new Version(sys.SubValue("AppOptions", "AppVersion"), sys.SubValue("AppOptions", "AppVersionDate"));

                if (_delegates.Last().Version <= _dbVersion)
                {
                    return(0);
                }
                return(_delegates.Exists(x => x.Version > _dbVersion && !x.IsBack) ? 2 : 1);
            }
            catch { return(-1); }
        }
コード例 #10
0
ファイル: SysTablTest.cs プロジェクト: martugin/InfoTask2
        public void InstanceFuns()
        {
            using (var sys = new SysTabl(CopyFile(""), false))
            {
                Assert.IsNotNull(sys);
                Assert.AreEqual("OptionsValue", sys.Value("FileOptions"));
                Assert.AreEqual("ParamValue", sys.Value("Param"));
                Assert.AreEqual("OptionsTag", sys.Tag("FileOptions"));
                Assert.AreEqual("ParamTag", sys.Tag("Param"));
                sys.PutValue("Param", "s1", "t1");
                Assert.AreEqual("s1", sys.Value("Param"));
                Assert.AreEqual("t1", sys.Tag("Param"));
                sys.PutValue("Param", 22, "t2");
                Assert.AreEqual("22", sys.Value("Param"));
                Assert.AreEqual("t2", sys.Tag("Param"));
                sys.PutValue("Param", 33.3, "t3");
                Assert.AreEqual("33,3", sys.Value("Param"));
                Assert.AreEqual("t3", sys.Tag("Param"));
                sys.PutValue("Param", new DateTime(2000, 1, 1));
                Assert.AreEqual("01.01.2000 0:00:00", sys.Value("Param"));
                Assert.AreEqual("t3", sys.Tag("Param"));
                sys.PutValue("Param", true, "");
                Assert.AreEqual("True", sys.Value("Param"));
                Assert.AreEqual("", sys.Tag("Param"));
                sys.PutTag("Param", "Tag", "Value");
                Assert.AreEqual("Value", sys.Value("Param"));
                Assert.AreEqual("Tag", sys.Tag("Param"));
            }

            var db = new DaoDb(CopyFile(""));

            using (var sys = new SysTabl(db))
            {
                Assert.IsNotNull(sys);
                Assert.AreEqual("OptionsValue", sys.Value("FileOptions"));
                Assert.AreEqual("ParamValue", sys.Value("Param"));
                Assert.AreEqual("OptionsTag", sys.Tag("FileOptions"));
                Assert.AreEqual("ParamTag", sys.Tag("Param"));

                Assert.AreEqual("Тестовый файл", sys.SubValue("FileOptions", "FileDescription"));
                Assert.AreEqual("DaoTest", sys.SubValue("FileOptions", "FileType"));
                Assert.AreEqual("2.0.0", sys.SubValue("FileOptions", "FileVersion"));
                Assert.AreEqual("11.07.2016", sys.SubValue("FileOptions", "FileVersionDate"));
                Assert.AreEqual("SubValue", sys.SubValue("Param", "SubParam"));
                Assert.AreEqual(null, sys.SubTag("FileOptions", "FileDescription"));
                Assert.AreEqual("SubTag", sys.SubTag("Param", "SubParam"));
                sys.PutSubValue("Param", "SubParam", "s1", "t1");
                Assert.AreEqual("s1", sys.SubValue("Param", "SubParam"));
                Assert.AreEqual("t1", sys.SubTag("Param", "SubParam"));
                sys.PutSubValue("Param", "SubParam", 22, "t2");
                Assert.AreEqual("22", sys.SubValue("Param", "SubParam"));
                Assert.AreEqual("t2", sys.SubTag("Param", "SubParam"));
                sys.PutSubValue("Param", "SubParam", 33.3, "t3");
                Assert.AreEqual("33,3", sys.SubValue("Param", "SubParam"));
                Assert.AreEqual("t3", sys.SubTag("Param", "SubParam"));
                sys.PutSubValue("Param", "SubParam", new DateTime(2000, 1, 1));
                Assert.AreEqual("01.01.2000 0:00:00", sys.SubValue("Param", "SubParam"));
                Assert.AreEqual("t3", sys.SubTag("Param", "SubParam"));
                sys.PutSubValue("Param", "SubParam", true, "");
                Assert.AreEqual("True", sys.SubValue("Param", "SubParam"));
                Assert.AreEqual("", sys.SubTag("Param", "SubParam"));
                sys.PutSubTag("Param", "SubParam", "Tag", "Value");
                Assert.AreEqual("Value", sys.SubValue("Param", "SubParam"));
                Assert.AreEqual("Tag", sys.SubTag("Param", "SubParam"));
            }
            db.Dispose();
        }
コード例 #11
0
 private void Projects_CellContentClick(object sender, DataGridViewCellEventArgs e)
 {
     try //Нажатие кнопки обзор
     {
         if (e.ColumnIndex == 5 && e.RowIndex >= 0)
         {
             try
             {
                 string t        = "Файл проекта ";
                 var    isNewRow = Projects.Rows[e.RowIndex].IsNewRow;
                 try { if (!isNewRow)
                       {
                           t += Projects.Rows[e.RowIndex].Get("Project");
                       }
                 }
                 catch { }
                 var d = new DialogCommand(DialogType.OpenFile)
                 {
                     DialogTitle = t, ErrorMessage = "Указан недопустимый файл проекта"
                 };
                 d.FileTables = new[] { "CalcParams", "CalcSubParams", "GraficsList", "SignalsInUse", "Providers" };
                 string file = d.Run(Projects.Rows[e.RowIndex].Get("ProjectFile"));
                 if (file.IsEmpty())
                 {
                     return;
                 }
                 if (isNewRow)
                 {
                     Projects.Rows.Add();
                 }
                 var cells = Projects.Rows[e.RowIndex].Cells;
                 cells["ProjectFile"].Value = file;
                 cells["Project"]           = new DataGridViewTextBoxCell();
                 using (var syst = new SysTabl(file))
                 {
                     string s = syst.SubValue("ProjectInfo", "Project");
                     if (s != null)
                     {
                         cells["Project"].Value = s;
                     }
                     else
                     {
                         cells["Project"].Value = DBNull.Value;
                     }
                     s = syst.SubValue("ProjectInfo", "ProjectName");
                     if (s != null)
                     {
                         cells["ProjectName"].Value = s;
                     }
                     else
                     {
                         cells["ProjectName"].Value = DBNull.Value;
                     }
                 }
                 UpdateProvidersList();
             }
             catch (Exception ex)
             {
                 GeneralRep.ShowError("Указан недопустимый файл проекта", ex);
             }
         }
     }
     catch {}
 }
コード例 #12
0
 private static string SqlParam(SysTabl sys, string name)
 {
     return(name + "=" + sys.SubValue("SQLServerSettings", name));
 }
コード例 #13
0
 //Загрузка SysTabl проекта, needCompilation = true - ругается, если проект не скомпилирован
 public void ReadSysTabl(bool needCompilation)
 {
     try
     {
         using (var sys = new SysTabl(File))
         {
             Code        = sys.SubValue("ProjectInfo", "Project");
             Name        = sys.SubValue("ProjectInfo", "ProjectName");
             Description = sys.SubValue("ProjectInfo", "ProjectDescription");
             VedTag      = sys.Tag("VedTag");
             if (needCompilation)
             {
                 Interpolation = sys.SubValue("ProjectInfo", "Interpolation").ToInterpolation();
                 LastChange    = DateTime.Parse(sys.SubValue("CompileStatus", "LastTimeCompile"));
             }
             IsMoments     = sys.SubValue("ArchiveOptions", "IsMoments") == "True";
             IsPeriodic    = sys.SubValue("ArchiveOptions", "IsPeriodic") == "True";
             IsAbsolute    = sys.SubValue("ArchiveOptions", "IsAbsolute") == "True";
             IsPrevAbs     = sys.SubValue("ArchiveOptions", "IsPrevAbs") == "True";
             IsLastBase    = sys.SubValue("ArchiveOptions", "IsLastBase") == "True";
             IsLastHour    = sys.SubValue("ArchiveOptions", "IsLastHour") == "True";
             IsLastDay     = sys.SubValue("ArchiveOptions", "IsLastDay") == "True";
             IsManyBase    = sys.SubValue("ArchiveOptions", "IsManyBase") == "True";
             IsManyHour    = sys.SubValue("ArchiveOptions", "IsManyHour") == "True";
             IsManyDay     = sys.SubValue("ArchiveOptions", "IsManyDay") == "True";
             IsManyMoments = sys.SubValue("ArchiveOptions", "IsManyMoments") == "True";
         }
     }
     catch (Exception ex)
     {
         ThreadCalc.AddError("Недопустимые настройки в файле проекта (SysTabl) или проект никогда не копилировался", ex, "Путь=" + File);
     }
 }