예제 #1
0
        /// <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);
            }
        }