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 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 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; } }
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 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(); } } }