public static void GetConfigFromDb() { //logger.Info(" =================================================================== "); logger.Logged("Info", "Запуск ", "PollerWatchdog", "GetConfigFromDb"); //dbSaver = new DbSaver(); bool result = false; while (result == false // && must_break == false ) { try { var opcs = (from ti in context.Objects join to in context.Properties on ti.Id equals to.ObjectId where ti.Type == 1 && to.PropId == 0 select new { Id = ti.Id, Name = ti.Name, Props = to.Value }).ToList(); // var z1 = opcs.Where(x => x.Props.Contains(Environment.MachineName)).FirstOrDefault(); // if (z1==null ) // opcs.Add(new { Id = 0, Name = Environment.MachineName, Props = "{\"Id\":0,\"Name\":\"COPCUA\",\"Type\":\"UA\",\"Connection\":\"opc.tcp:\\\\\\\\"+ Environment.MachineName + ":51212\",\"Connect\":true}" }); // opclist.Add("{\"Id\":\"1\",\"Type\":\"UA\",\"Connection\":\"opc.tcp://Q3DM6:51212/\"}"); foreach (var opc in opcs) { dynamic dict = json.DeserializeObj(opc.Props); DataPoller opcPoller = null; string z = ""; try { z = dict.Type; } catch (Exception) { } // if (json.IsPropertyExist(dict, "Name")) //string z = Convert.ToString(dict.Type); switch (z) { case "DA": logger.Logged("Info", "Создаем поллер для DA сервера: " + Convert.ToString(dict.Connection), "PollerWatchdog", "GetConfigFromDb"); opcPoller = new OpcDaPoller(); break; case "UA": logger.Logged("Info", "Создаем поллер для UA сервера: " + Convert.ToString(dict.Connection), "PollerWatchdog", "GetConfigFromDb"); opcPoller = new UaPoller(); break; default: logger.Logged("Info", "Неподдерживаемый тип OPC: " + opc.Id + ", " + opc.Name, "PollerWatchdog", "GetConfigFromDb"); break; } if (opcPoller != null) { if (Convert.ToBoolean(dict.Connect)) { opcPoller.Connect = true; logger.Logged("Info", "Инициализируем #" + Convert.ToString(dict.Id) + "...", "PollerWatchdog", "GetConfigFromDb"); opcPoller.Initialize(dict.Connection.ToString(), Convert.ToInt32(dict.Id)); } opcPoller.SubAll = Convert.ToBoolean(dict.SubAll); opcPoller.LastPoll = DateTime.Now; opcPoller.OnUpdateAnalog += OnUpdateAnalog; opcPoller.OnUpdateDiscrete += OnUpdateDiscrete; opcPoller.OnUpdateEmpty += OnUpdateEmpty; opcPoller.OnUpdate += OnUpdate; opcPoller.AddTags(readTags(Convert.ToInt32(dict.Id))); _pollers.Add(opcPoller); } } result = true; } catch (Exception ex) { logger.Logged("Error", "Не удалось считать список OPC-серверов из БД: " + ex.Message, "PollerWatchdog", "GetConfigFromDb"); return; } } }
public static void GetConfigFromDb() { //logger.Info(" =================================================================== "); logger.Logged("Info", "Запуск ", "PollerWatchdog", "GetConfigFromDb"); //dbSaver = new DbSaver(); bool result = false; while (result == false // && must_break == false ) { try { var opcs = (from ti in context.Objects join to in context.Properties on ti.Id equals to.ObjectId where ti.Type == 1 && to.PropId == 0 select to.Value); var opclist = opcs.ToList(); //opclist.Add("{\"Id\":\"1\",\"Type\":\"UA\",\"Connection\":\"opc.tcp://Q3DM6:51212/\"}"); foreach (var opc in opclist) { dynamic dict = JsonConvert.DeserializeObject(opc); DataPoller opcPoller = null; string z = Convert.ToString(dict.Type); switch (z) { case "DA": logger.Logged("Info", "Создаем поллер для DA сервера: " + Convert.ToString(dict.Connection), "PollerWatchdog", "GetConfigFromDb"); opcPoller = new OpcDaPoller(); break; case "UA": logger.Logged("Info", "Создаем поллер для UA сервера: " + Convert.ToString(dict.Connection), "PollerWatchdog", "GetConfigFromDb"); opcPoller = new UaPoller(); break; default: //logger.Error("Неподдерживаемый тип OPC: {0}, строка подключения '{1}'", opc.type_id, opc.connect); break; } if (opcPoller != null && Convert.ToBoolean(dict.Connect)) { logger.Logged("Info", "Инициализируем #" + Convert.ToString(dict.Id) + "...", "PollerWatchdog", "GetConfigFromDb"); opcPoller.Initialize(dict.Connection.ToString(), Convert.ToInt32(dict.Id)); opcPoller.LastPoll = DateTime.Now; opcPoller.OnUpdateAnalog += OnUpdateAnalog; opcPoller.OnUpdateDiscrete += OnUpdateDiscrete; opcPoller.OnUpdateEmpty += OnUpdateEmpty; opcPoller.OnUpdate += OnUpdate; opcPoller.AddTags(readTags(Convert.ToInt32(dict.Id))); _pollers.Add(opcPoller); } } result = true; } catch (Exception ex) { logger.Logged("Error", "Не удалось считать список OPC-серверов из БД: " + ex.Message, "PollerWatchdog", "GetConfigFromDb"); //logger.Warn("Повтрим попытку через 5 секунд..."); Thread.Sleep(5000); } } }