/// <summary> /// Загрузить данные входных каналов, которые используются в схеме /// </summary> public bool LoadCnlData(string clientID, List <int> cnlList, out List <SchemeView.CnlData> cnlDataList) { // проверка режима работы приложения SchemeApp schemeApp = SchemeApp.GetSchemeApp(); if (schemeApp.WorkMode != SchemeApp.WorkModes.Monitor) { cnlDataList = null; return(false); } // получение списка входных каналов, если он неопределён HttpContext context = HttpContext.Current; if (cnlList == null && context != null) { HttpSessionState session = context.Session; Dictionary <string, object> schemeClients = session == null ? null : session["ScadaSchemeClients"] as Dictionary <string, object>; if (schemeClients != null && clientID != null) { cnlList = schemeClients[clientID] as List <int>; } } if (cnlList == null) { HttpRequest request = context == null ? null : context.Request; string host = request == null ? "" : (Localization.UseRussian ? ". Хост: " : ". Host: ") + request.UserHostAddress; schemeApp.Log.WriteAction((Localization.UseRussian ? "Не удалось получить список входных каналов" : "Unable to get input channels list") + host, Log.ActTypes.Error); cnlDataList = null; return(false); } else { // получение данных входных каналов MainData mainData = schemeApp.MainData; mainData.RefreshData(); cnlDataList = new List <SchemeView.CnlData>(); foreach (int cnlNum in cnlList) { double val; int stat; string color; SchemeView.CnlData cnlData = new SchemeView.CnlData(); mainData.GetCurData(cnlNum, out val, out stat); cnlData.Val = val; cnlData.ValStr = mainData.GetCnlVal(cnlNum, false, out color); cnlData.ValStrWithUnit = mainData.GetCnlVal(cnlNum, true, out color); cnlData.Stat = stat; cnlData.Color = color; cnlDataList.Add(cnlData); } return(true); } }