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)); } }
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; } }
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++; } }
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; } }
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; }
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; } } }
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); } } } } } }
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); } } } } }
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(); }
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(); } } }
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(); } } }
private void backgroundBaseReload_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { string ptname = (string)e.Argument; Data.LoadBase(PointPlugin.LoadPlugins(Application.StartupPath), ptname); }