示例#1
0
            /// <summary>
            /// Установить значение для сигнала группы, по ключу, за указанный час
            /// </summary>
            /// <param name="indx">Индекс группы сигналов</param>
            /// <param name="keySgnl">Ключ сигнала</param>
            /// <param name="iHour">Индекс часа в сутках</param>
            /// <param name="value">Устанавливаемое значение</param>
            public void SetValue(INDEX_DATA indx,SIGNAL.KEY keySgnl,int iHour,double value)
            {
                MethodBase methodBase = MethodBase.GetCurrentMethod();
                string     errMsg     = string.Format(@"{0}.{1}::{2} () - ",methodBase.Module,methodBase.DeclaringType,methodBase.Name);

                if (m_dictData.ContainsKey(indx) == true)
                {
                    if (m_dictData[indx].ContainsKey(keySgnl) == true)
                    {
                        m_dictData[indx][keySgnl].m_data[iHour] = value;
                    }
                    else
                    {
                        Logging.Logg().Error(string.Format(@"{0}в словаре c INDEX={1} не инициализирован сигнал key={2}"
                                                           ,errMsg,indx.ToString(),keySgnl.ToString())
                                             ,Logging.INDEX_MESSAGE.NOT_SET);
                    }
                }
                else
                {
                    Logging.Logg().Error(string.Format(@"{0}в словаре не инициализирована группа сигналов INDEX={1}..."
                                                       ,errMsg,indx.ToString())
                                         ,Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
示例#2
0
            /// <summary>
            /// Установить значения для группы сигналов по индексу группы
            /// </summary>
            /// <param name="indx">Индекс группы сигналов</param>
            /// <param name="listRecRes">Список значений</param>
            public void SetValues(INDEX_DATA indx,List <RecordResult> listRecRes)
            {
                SIGNAL.KEY keySgnl;         // ключ для сигнала
                int        iHour      = -1; // индекс часа
                MethodBase methodBase = MethodBase.GetCurrentMethod();
                string     errMsg     = string.Format(@"{0}.{1}::{2} () - ",methodBase.Module,methodBase.DeclaringType,methodBase.Name);

                if (m_dictData.ContainsKey(indx) == true)
                {
                    foreach (RecordResult r in listRecRes)
                    {
                        keySgnl = new SIGNAL.KEY(r.m_key);

                        if (m_dictData[indx].ContainsKey(keySgnl) == true)
                        {
                            // дата всегда одна и та же за исключением одной записи
                            iHour = r.m_dtRec.Hour > 0 ? r.m_dtRec.Hour - 1 : 23;
                            m_dictData[indx].SetValue(keySgnl,iHour,r.m_value);
                        }
                        else
                        {
                            Logging.Logg().Error(string.Format(@"{0}в словаре c INDEX={1} не инициализирован сигнал key={2}"
                                                               ,errMsg,indx.ToString(),keySgnl.ToString())
                                                 ,Logging.INDEX_MESSAGE.NOT_SET);
                        }
                    }

                    m_dictData[indx].CompleteSetValues();
                }
                else
                {
                    Logging.Logg().Error(string.Format(@"{0}в словаре не инициализирована группа сигналов INDEX={1}..."
                                                       ,errMsg,indx.ToString())
                                         ,Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
示例#3
0
        /// <summary>
        /// Возвратить строку с идентификаторами сигналов для указанного списка
        /// </summary>
        /// <param name="listSgnls">Список сигналов для которых требуется возвратить строку</param>
        /// <returns>Строка с идентификаторами сигналов</returns>
        private string getSensors(INDEX_DATA indx,List <SIGNAL> listSgnls)
        {
            string strRes = string.Empty;

            List <int>    listIdUSPD  = new List <int>();
            List <string> sensorsUSPD = new List <string>();
            string        strOR       = @" OR ";
            Action <string,Logging.INDEX_MESSAGE,bool> delegateLogging;

            if ((!(listSgnls == null)) &&
                (listSgnls.Count > 0))
            {
                foreach (SIGNAL s in listSgnls)
                {
                    if (listIdUSPD.IndexOf(s.m_key.m_object) < 0)
                    {
                        listIdUSPD.Add(s.m_key.m_object);

                        sensorsUSPD.Add(@"([OBJECT] = " + s.m_key.m_object + @" AND [ITEM] IN (" + s.m_key.m_item);
                    }
                    else
                    {
                        sensorsUSPD[listIdUSPD.IndexOf(s.m_key.m_object)] += (@"," + s.m_key.m_item);
                    }
                }

                foreach (string s in sensorsUSPD)
                {
                    //Добавить завершающие скобки (1-я для IN, 2-я для [OBJECT])
                    strRes += s + @"))";
                    strRes += strOR;
                }

                if (strRes.Equals(string.Empty) == false)
                {
                    strRes = strRes.Substring(0,strRes.Length - strOR.Length);
                }
                else
                {
                    Logging.Logg().Error($"TEC::getSensors () - не распознан ни один сигнал для ТЭЦ ID={m_Id}, группа={indx.ToString ()}..."
                                         ,Logging.INDEX_MESSAGE.NOT_SET);
                }
            }
            else
            {
                if (_requiredSignals[(int)indx] == true)
                {
                    // ошибка только в случае обязательного наличия сигналов
                    delegateLogging = Logging.Logg().Error;
                }
                else
                {
                    // иначе - предупреждение
                    delegateLogging = Logging.Logg().Warning;
                }

                delegateLogging?.Invoke($"TEC::getSensors () - не определен ни один сигнал для ТЭЦ ID={m_Id}, группа={indx.ToString()}..."
                                        ,Logging.INDEX_MESSAGE.NOT_SET,true);
            }

            return(strRes);
        }