Exemple #1
0
        private void LoadFirst()
        {
            // Проверка авторизации
            Properties.Settings settings = Properties.Settings.Default;
            Registered = Data.Authorization(settings.CopyOwner, settings.CopyKey);
            Bonus      = !Registered;

            string configfilename = Application.StartupPath + "\\config.ini";

            if (File.Exists(configfilename))
            {
                MemIniFile mif     = new MemIniFile(configfilename);
                string     section = "Application";
                mif.WriteInteger(section, "Station", Properties.Settings.Default.Station);
                mif.WriteString(section, "StartupPath", Application.StartupPath);
                mif.WriteBool(section, "Registered", Registered);
                mif.WriteBool(section, "Bonus", Bonus);
                string[] channels = Properties.Settings.Default.Channels.Split('\t');

                // Загрузка плагина точек KR500
                PointPlugin.LoadPlugin(Application.StartupPath + "\\Points.KR500.dll");

                FetchKR500Functions.StartFetch(
                    new Tuple <int, string[], string, exitApp, int>(
                        Properties.Settings.Default.Station,
                        channels, mif.ToString(), closeServer,
                        Properties.Settings.Default.TimeOut));
            }
        }
Exemple #2
0
        private void frmFetching_Load(object sender, EventArgs e)
        {
            Process process = RunningInstance();

            if (process != null)
            {
                Application.Exit();
                return;
            }
            Data.RestoreSQLsettings(Application.StartupPath);
            TurnOnTime = DateTime.Now;
            // Проверка авторизации
            Properties.Settings settings = Properties.Settings.Default;
            Registered = Data.Authorization(settings.CopyOwner, settings.CopyKey);
            if (!Registered)
            {
                notifyIcon.Text += " (нет авторизации)";
            }
            Bonus = !Registered;
            // Загрузка плагина ROC809 точек
            PointPlugin.LoadPlugin(Application.StartupPath + "\\Points.ROC809.dll");
            // Инициализация, создание баз, если их раньше не было
            Settings.CreateDataAndFetchBases();
            Data.SendToSystemLog(Properties.Settings.Default.Station,
                                 "Опрос ROC809", "Сервер опроса загружен");
            ClientID = Data.ClientLogin(ClientID, "F", Properties.Settings.Default.Station,
                                        "Сервер опроса ROC809");
            // Заполнение списка для визуализации
            LoadFirst();
            fetchTimer.Enabled = true;
        }
        private static void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            Tuple <string, string, string, int, string> args =
                (Tuple <string, string, string, int, string>)e.Argument;
            string ClientID = args.Item1;
            string ApplicationStartupPath = args.Item2;
            string ConfigContent          = args.Item3;
            int    channel       = args.Item4;
            string channelName   = args.Item5;
            string cnannelConfig = configString(ConfigContent, channelName).ToUpper();

            Data.RestoreSQLsettingsFromString(ConfigContent);
            BackgroundWorker worker = (BackgroundWorker)sender;

            TurnOnTime = DateTime.Now;
            // Загрузка плагина KR500 точек
            PointPlugin.LoadPlugin(ApplicationStartupPath + "\\Points.KR500.dll", ref plugins);
            // Инициализация, создание баз, если их раньше не было
            Settings.CreateDataAndFetchBases();
            string desc = "Канал " + channel + " сервера опроса";

            // Заполнение списка для опроса
            LoadFirst(worker, ClientID, channel);

            bool _continue = true;

            while (_continue)
            {
                if (!Data.ImLive(ClientID, "F", Station, desc + " KR500"))
                {
                    ClientID = Data.ClientLogin(ClientID, "F", Station, desc + " KR500");
                }
                string[] command = Data.GetClientCommand(ClientID);
                //if (command[0].Equals("RELOAD"))
                //{
                //}
                //try
                //{
                FetchBase(worker, ClientID, channel, cnannelConfig);
                Thread.Sleep(50);
                //}
                //catch (Exception ex)
                //{
                //    Data.SendToSystemLog(0, "Опрос КР500", ex.Message);
                //}
                //worker.ReportProgress(0, DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss"));
                _continue = !worker.CancellationPending;
            }
        }
Exemple #4
0
        public frmInputPtName()
        {
            InitializeComponent();
            int i = 0;

            colorlist.Clear(); keylist.Clear(); pluglist.Clear();
            IDictionary <string, IPointPlugin> plugins =
                PointPlugin.LoadPlugins(Application.StartupPath);

            foreach (KeyValuePair <string, IPointPlugin> kvp in plugins)
            {
                colorlist.Add(i, kvp.Value.GetIconColor);
                keylist.Add(i, kvp.Value.PluginShortType);
                pluglist.Add(i, kvp.Value);
                i++;
            }
        }
Exemple #5
0
        public frmEntitySelector(string name, string param, PointSelector kind)
        {
            InitializeComponent();
            IDictionary <string, IPointPlugin> plugins = PointPlugin.LoadPlugins(Application.StartupPath);

            foreach (KeyValuePair <string, IPointPlugin> plugin in plugins)
            {
                using (Bitmap bmp = new Bitmap(16, 16))
                {
                    Graphics g = Graphics.FromImage(bmp);
                    Data.DrawIconImage(Graphics.FromImage(bmp),
                                       plugin.Value.GetIconColor, plugin.Value.PluginShortType);
                    ilList.Images.Add(bmp);
                }
                IconList.Add(plugin.Value.PluginCategory + plugin.Value.PluginShortType,
                             ilList.Images.Count - 1);
            }
            switch (kind)
            {
            case PointSelector.AllPoints: FillItemsForAllPoints(ilList, IconList); break;

            case PointSelector.TrendPoints: FillItemsForTrendPoints(ilList, IconList); break;

            case PointSelector.TablePoints: FillItemsForTablePoints(ilList, IconList); break;

            case PointSelector.AnalogPoints: FillItemsForAnalogPoints(ilList, IconList); break;

            case PointSelector.DigitalPoints: FillItemsForDigitalPoints(ilList, IconList); break;

            case PointSelector.KonturPoints: FillItemsForKonturPoints(ilList, IconList); break;

            case PointSelector.ValvePoints: FillItemsForValvePoints(ilList, IconList); break;
            }
            this.EntityName  = name;
            this.EntityParam = param;
            ListViewItem item = lvItems.FindItemWithText(name +
                                                         ((param.Length > 0) ? "." + param : String.Empty));

            if (item != null)
            {
                item.EnsureVisible();
                lvItems.FocusedItem = item;
                item.Selected       = true;
                btnOk.Enabled       = true;
            }
        }
Exemple #6
0
        private void frmDataEditor_Load(object sender, EventArgs e)
        {
            Process process = RunningInstance();

            if (process != null)
            {
                Application.Exit();
                return;
            }
            Data.RestoreSQLsettings(Application.StartupPath);
            Settings.CreateDataAndFetchBases();
            baseVersion = Data.LoadBase(PointPlugin.LoadPlugins(Application.StartupPath));
            LoadUsersList();
            UpdateStatusMessage("Готово");
            SelectedFormShow(Program.argsString);
            //this.tlbStatusMessage.Text = Program.argsString;
            tmrLive.Enabled = true;
        }
Exemple #7
0
 private void miRestoreServerDataFromFiles_Click(object sender, EventArgs e)
 {
     if (MessageBox.Show(this, "Существующие данные сервера будут заменены! Продолжить?",
                         "Восстановление данных с локального диска на сервер", MessageBoxButtons.YesNoCancel,
                         MessageBoxIcon.Warning) == DialogResult.Yes)
     {
         Cursor = Cursors.WaitCursor;
         try
         {
             string path     = Application.StartupPath + "\\backup\\";
             string filename = path + "exportbase.ini";
             if (File.Exists(filename))
             {
                 UpdateStatusMessage("Импорт базы данных...");
                 IDictionary <string, IPointPlugin> plugins =
                     PointPlugin.LoadPlugins(Application.StartupPath);
                 Data.ImportBaseFrom(plugins, filename, UpdateStatusMessage);
             }
             filename = path + "exporttrends.ini";
             if (File.Exists(filename))
             {
                 UpdateStatusMessage("Импорт групп параметров трендов...");
                 Data.ImportGroupsFrom(filename, ParamGroup.Trend);
             }
             filename = path + "exporttables.ini";
             if (File.Exists(filename))
             {
                 UpdateStatusMessage("Импорт групп параметров таблиц...");
                 Data.ImportGroupsFrom(filename, ParamGroup.Table);
             }
             UpdateStatusMessage("Импорт динамических элементов мнемосхем...");
             DrawPlugin.ImportSchemesFrom(path + "schemes\\", UpdateStatusMessage);
             UpdateStatusMessage("Импорт файлов картинок...");
             DrawPlugin.ImportImagesFrom(path + "images\\", UpdateStatusMessage);
             UpdateStatusMessage("Импорт файлов отчётов...");
             DrawPlugin.ImportReportsFrom(path + "reports\\", UpdateStatusMessage);
             UpdateStatusMessage("Готово.");
         }
         finally
         {
             Cursor = Cursors.Default;
         }
     }
 }
Exemple #8
0
        private void LoadFirst()
        {
            // Загрузка OPC точек из базы данных
            Data.LoadBase(PointPlugin.LoadPlugin(Application.StartupPath + "\\Points.OPC.dll"));
            string station = Properties.Settings.Default.Station.ToString();

            fillShowList();
            using (ServerSQL dataSQL = new ServerSQL(DatabaseFrom.Database, true))       // чтение
            {
                using (ServerSQL fetchSQL = new ServerSQL(DatabaseFrom.Fetchbase, true)) // чтение
                {
                    if (dataSQL.Connected && fetchSQL.Connected)
                    {
                        foreach (KeyValuePair <string, Entity> kvp in Data.Entities())
                        {
                            string ptname = kvp.Key;
                            Entity ent    = kvp.Value;
                            ent.Reals = Data.GetRealValues(ptname, fetchSQL, dataSQL);
                            ent.SetRealProp("Station", station);
                            ent.SetRealProp("Alarms", String.Empty);
                            ent.SetRealProp("LostAlarms", String.Empty);
                            ent.SetRealProp("QuitAlarms", true.ToString());
                            Data.WriteRealVals(ent, fetchSQL);
                            //ent.RemoveAlarms();
                            //ent.RemoveSwitchs();
                            if (ent.Values.ContainsKey("Server") && ent.Values.ContainsKey("Group") &&
                                ent.Values.ContainsKey("Item"))
                            {
                                string server = ent.Values["Server"].ToString();
                                string group  = ent.Values["Group"].ToString();
                                string param  = ent.Values["Item"].ToString();
                                opc.AddItem(server, group, param);
                            }
                        }
                    }
                }
            }
        }
Exemple #9
0
        private void miTuningLink_Click(object sender, EventArgs e)
        {
            using (frmTuning form = new frmTuning())
            {
                form.cbScreenSize.SelectedIndex = Properties.Settings.Default.ScreenSize;
                form.tbHostName.Text            = BaseServer.Settings.Host;
                form.tbPortNumber.Text          = BaseServer.Settings.Port;
                form.tbUserName.Text            = BaseServer.Settings.User;
                form.tbPassword.Text            = BaseServer.Settings.Password;
                form.tbFetchBase.Text           = BaseServer.Settings.Fetchbase;
                form.tbDatabase.Text            = BaseServer.Settings.Database;
                if (form.ShowDialog() == DialogResult.OK)
                {
                    Properties.Settings settings = Properties.Settings.Default;
                    settings.ScreenSize = form.cbScreenSize.SelectedIndex;
                    settings.Save();
                    if (BaseServer.Settings.Host != form.tbHostName.Text ||
                        BaseServer.Settings.Port != form.tbPortNumber.Text ||
                        BaseServer.Settings.User != form.tbUserName.Text ||
                        BaseServer.Settings.Password != form.tbPassword.Text ||
                        BaseServer.Settings.Fetchbase != form.tbFetchBase.Text ||
                        BaseServer.Settings.Database != form.tbDatabase.Text)
                    {
                        BaseServer.Settings.Host      = form.tbHostName.Text;
                        BaseServer.Settings.Port      = form.tbPortNumber.Text;
                        BaseServer.Settings.User      = form.tbUserName.Text;
                        BaseServer.Settings.Password  = form.tbPassword.Text;
                        BaseServer.Settings.Fetchbase = form.tbFetchBase.Text;
                        BaseServer.Settings.Database  = form.tbDatabase.Text;

                        SaveSettings();

                        Data.RestoreSQLsettings(Application.StartupPath);
                        if (Settings.CreateDataAndFetchBases())
                        {
                            try { DrawPlugin.RestoreImageCatalog(Application.StartupPath + "\\images\\"); }
                            catch (Exception ex)
                            {
                                Data.SendToSystemLog(Properties.Settings.Default.Station, "Картинки",
                                                     "Ошибка: " + ex.Message);
                            }
                            try { DrawPlugin.RestoreReportCatalog(Application.StartupPath + "\\reports\\"); }
                            catch (Exception ex)
                            {
                                Data.SendToSystemLog(Properties.Settings.Default.Station, "Отчёты",
                                                     "Ошибка: " + ex.Message);
                            }

                            Data.LoadBase(PointPlugin.LoadPlugins(Application.StartupPath));
                            MessageBox.Show(this, "Подключение к SQL-серверу успешно восстановлено.",
                                            "Настройка связи с SQL-сервером", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else
                        {
                            MessageBox.Show(this, "Не удалось восстановить подключение к SQL-серверу.\n" +
                                            Settings.LastError,
                                            "Настройка связи с SQL-сервером", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                    }
                }
            }
        }
Exemple #10
0
        private void frmMain_Load(object sender, EventArgs e)
        {
            #region Защита от повторного запуска
            Process process = RunningInstance();
            if (process != null)
            {
                Application.Exit(); return;
            }
            #endregion
            this.Width         = 0;
            this.Height        = 1;
            MustWinLogOff      = false;
            AlarmAsked         = true;
            EntityAsked        = String.Empty;
            this.StationNumber = Properties.Settings.Default.Station;
            SplashForm         = new frmAbout();
            SplashForm.Show();
            SplashForm.Refresh();
            LoadUsersList(Application.StartupPath + "\\users.xml");
            IDictionary <string, IPointPlugin> plugins = PointPlugin.LoadPlugins(Application.StartupPath);
            DrawPlugin.LoadPlugins(Application.StartupPath);
            Data.RestoreSQLsettings(Application.StartupPath);
            Settings.CreateDataAndFetchBases();
            #region Создание кэша картинок на диске
            try { DrawPlugin.RestoreImageCatalog(Application.StartupPath + "\\images\\"); }
            catch (Exception ex)
            {
                Data.SendToSystemLog(StationNumber, "Картинки",
                                     "Ошибка: " + ex.Message);
            }
            #endregion
            baseVersion        = Data.LoadBase(plugins);
            timerClock.Enabled = true;
            timerFetch.Enabled = true;
            Data.SendToChangeLog(StationNumber, "Станция RemX", "Старт", String.Empty, "Работа",
                                 "Автономно", "Уровень доступа: " + UserLevel.ToString());
            Data.SendToSystemLog(StationNumber, "Станция RemX", "Рабочая станция загружена");
            ClientID = Data.ClientLogin(ClientID, "S", StationNumber, Properties.Settings.Default.StationName);
            LoadFetchServers();

            //if (ServerSQL.HostIsLocalhost()) startFetchServices();

            bool     winmode  = Properties.Settings.Default.WindowMode;
            Screen[] monitors = Screen.AllScreens;
            panels = new frmPanel[monitors.Length];
            for (int i = 0; i < monitors.Length; i++)
            {
                if (!winmode || winmode && monitors[i].Primary)
                {
                    panels[i] = new frmPanel(this, monitors[i].Primary, monitors[i].WorkingArea);
                    if (winmode)
                    {
                        panels[i].FormBorderStyle    = System.Windows.Forms.FormBorderStyle.Sizable;
                        panels[i].pnlCaption.Visible = false;
                        panels[i].stpStatus.Visible  = false;
                        panels[i].Size = new System.Drawing.Size(
                            Properties.Settings.Default.PanelWidth,
                            Properties.Settings.Default.PanelHeight);
                        panels[i].Location = new System.Drawing.Point(
                            Properties.Settings.Default.PanelLeft,
                            Properties.Settings.Default.PanelTop);
                    }
                    panels[i].Show(this);
                }
            }
            PeriodicalCheck();
        }
Exemple #11
0
        private void LoadFirst()
        {
            // Загрузка ROC809 точек из базы данных
            Data.LoadBase(PointPlugin.LoadPlugin(Application.StartupPath + "\\Points.ROC809.dll"));
            string station = Properties.Settings.Default.Station.ToString();

            fillShowList();
            using (ServerSQL dataSQL = new ServerSQL(DatabaseFrom.Database, false))       // чтение
            {
                using (ServerSQL fetchSQL = new ServerSQL(DatabaseFrom.Fetchbase, false)) // чтение
                {
                    if (dataSQL.Connected && fetchSQL.Connected)
                    {
                        foreach (KeyValuePair <string, Entity> kvp in Data.Entities())
                        {
                            string ptname = kvp.Key;
                            Entity ent    = kvp.Value;
                            int    ptKind = int.Parse(ent.Values["PtKind"].ToString());
                            if (ptKind != PtKind.Group && ptKind != PtKind.Table)
                            {
                                continue;
                            }
                            switch (ptKind)
                            {
                            case PtKind.Group:
                                int fetchtime = (int)ent.Values["FetchTime"];
                                for (int i = 1; i <= 32; i++)
                                {
                                    string childname = (string)ent.Values["Child" + i];
                                    if (!String.IsNullOrWhiteSpace(childname))
                                    {
                                        Entity child = Data.GetEntity(childname, dataSQL);
                                        if (!child.Empty && (bool)child.Values["Actived"])
                                        {
                                            child.Reals =
                                                Data.GetRealValues(childname, fetchSQL, dataSQL);
                                            child.SetRealProp("FetchGroup", ptname);
                                            child.SetRealProp("GroupFetchTime", fetchtime.ToString());
                                            child.SetRealProp("Station", station);
                                            child.SetRealProp("Alarms", String.Empty);
                                            child.SetRealProp("LostAlarms", String.Empty);
                                            child.SetRealProp("QuitAlarms", true.ToString());
                                            Data.WriteRealVals(child, fetchSQL);
                                            //child.RemoveAlarms();
                                            //ent.RemoveSwitchs();
                                        }
                                    }
                                }
                                break;

                            case PtKind.Table:
                                ent.Reals = Data.GetRealValues(ptname, fetchSQL, dataSQL);
                                ent.SetRealProp("DataCount", "0");
                                ent.SetRealProp("Stable", false.ToString());
                                ent.SetRealProp("LastSnap", DateTime.MinValue.ToString());
                                Data.WriteRealVals(ent, fetchSQL);
                                break;
                            }
                        }
                    }
                }
            }
        }
        private static void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            Tuple <int, string, string, exitApp, string, int> args =
                (Tuple <int, string, string, exitApp, string, int>)e.Argument;
            int        channel = args.Item1;
            string     info    = args.Item2;
            MemIniFile mif     = new MemIniFile(String.Empty);

            mif.FromString(args.Item3);
            exitApp DoExitApp = args.Item4;
            string  ClientID  = args.Item5;
            int     timeout   = args.Item6;

            string section = "Application";
            int    station = mif.ReadInteger(section, "Station", 1);
            string ApplicationStartupPath = mif.ReadString(section, "StartupPath", ".");
            bool   Registered             = mif.ReadBool(section, "Registered", false);
            bool   Bonus = mif.ReadBool(section, "Bonus", false);

            Data.RestoreSQLsettingsFromString(args.Item3);
            BackgroundWorker worker     = (BackgroundWorker)sender;
            DateTime         TurnOnTime = DateTime.Now;
            IDictionary <string, IPointPlugin> plugins =
                PointPlugin.LoadPlugin(ApplicationStartupPath + "\\Points.Modbus.dll");

            // Инициализация, создание баз, если их раньше не было
            Settings.CreateDataAndFetchBases();
            string desc = "Канал " + channel + " сервера опроса";

            // Заполнение списка для опроса
            LoadFirst(worker, ClientID, channel, plugins);

            bool _exit     = false;
            bool _continue = true;

            while (_continue)
            {
                if (!Data.ImLive(ClientID, "F", Station, desc + " Modbus"))
                {
                    ClientID = Data.ClientLogin(ClientID, "F", station, desc + " Modbus");
                }
                string[] command = Data.GetClientCommand(ClientID);
                //if (command[0].Equals("RELOAD"))
                //{
                //}
                if (!Registered)
                {
                    if (DateTime.Now.AddHours(-2.5) > TurnOnTime)
                    {
                        Bonus = false;
                    }
                }
                if (Registered || Bonus)
                {
                    try
                    {
                        FetchBase(worker, ClientID, channel, info, timeout, plugins);
                        Thread.Sleep(50);
                    }
                    catch (Exception ex)
                    {
                        Data.SendToSystemLog(0, "Опрос Modbus", ex.Message);
                    }
                }
                else
                if (!_exit)
                {
                    _exit = true;
                    Data.SendToSystemLog(Station,
                                         "Опрос Modbus", "Прекращена работа неавторизованного сервера опроса");
                    DoExitApp();
                }
            }
        }
Exemple #13
0
        private static void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker        worker = (BackgroundWorker)sender;
            Tuple <string, exitApp> args   = (Tuple <string, exitApp>)e.Argument;

            MemIniFile mif = new MemIniFile(String.Empty);

            mif.FromString(args.Item1);
            string  section = "Application";
            int     station = mif.ReadInteger(section, "Station", 1);
            string  ApplicationStartupPath = mif.ReadString(section, "StartupPath", ".");
            bool    Registered             = mif.ReadBool(section, "Registered", false);
            bool    Bonus     = mif.ReadBool(section, "Bonus", false);
            exitApp DoExitApp = args.Item2;

            Data.RestoreSQLsettingsFromString(args.Item1);
            DateTime TurnOnTime = DateTime.Now;
            // Загрузка плагина виртуальных точек
            IDictionary <string, IPointPlugin> plugins =
                PointPlugin.LoadPlugin(ApplicationStartupPath + "\\Points.Virtuals.dll");

            // Инициализация, создание баз, если их раньше не было
            Settings.CreateDataAndFetchBases();
            // Загрузка виртуальных точек из базы данных
            Data.LoadBase(plugins);
            string desc = "Сервер опроса виртуальных значений";

            Data.SendToSystemLog(station, "Опрос виртуальных", "Сервер опроса загружен");
            ClientID = Data.ClientLogin(ClientID, "F", Station, desc);
            // Заполнение списка для опроса
            LoadFirst(worker);
            bool _exit     = false;
            bool _continue = true;

            while (_continue)
            {
                _continue = !worker.CancellationPending;
                if (!Data.ImLive(ClientID, "F", Station, desc))
                {
                    ClientID = Data.ClientLogin(ClientID, "F", Station, desc);
                }
                string[] command = Data.GetClientCommand(ClientID);
                //if (command[0].Equals("RELOAD"))
                //{
                //}
                if (!Registered)
                {
                    if (DateTime.Now.AddHours(-2.5) > TurnOnTime)
                    {
                        Bonus = false;
                    }
                }
                if (Registered || Bonus)
                {
                    try
                    {
                        FetchBase(worker, plugins);
                        Thread.Sleep(50);
                    }
                    catch (Exception ex)
                    {
                        Data.SendToSystemLog(0, "Опрос виртуальных", ex.Message);
                    }
                }
                else
                if (!_exit)
                {
                    _exit = true;
                    Data.SendToSystemLog(station,
                                         "Опрос виртуальных", "Прекращена работа неавторизованного сервера опроса");
                    DoExitApp();
                }
            }
        }
Exemple #14
0
        private void backgroundBaseReload_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            string ptname = (string)e.Argument;

            Data.LoadBase(PointPlugin.LoadPlugins(Application.StartupPath), ptname);
        }