Beispiel #1
0
 /// <summary>
 /// Starts the input channel data calculation
 /// <para>Начать вычисление данных входного канала</para>
 /// </summary>
 private void BeginCalcCnlData(int cnlNum, SrezTableLight.CnlData initalCnlData)
 {
     curCnlNum          = cnlNum;
     this.initalCnlData = initalCnlData;
     this.initalCmdVal  = 0.0;
     calcInCnl          = true;
 }
Beispiel #2
0
 /// <summary>
 /// Установить данные тега среза
 /// </summary>
 public void SetTagData(int tagIndex, SrezTableLight.CnlData newData)
 {
     if (0 <= tagIndex && tagIndex < TagData.Length)
     {
         TagData[tagIndex] = newData;
     }
 }
Beispiel #3
0
 /// <summary>
 /// Starts the command value or data calculation
 /// <para>Начать вычисление значения или данных команды</para>
 /// </summary>
 protected void BeginCalcCmdData(int ctrlCnlNum, double initialCmdVal, byte[] initialCmdData)
 {
     curCnlNum           = ctrlCnlNum;
     this.initialCnlData = SrezTableLight.CnlData.Empty;
     this.initialCmdVal  = initialCmdVal;
     this.initialCmdData = initialCmdData;
 }
Beispiel #4
0
 /// <summary>
 /// Starts the input channel data calculation
 /// <para>Начать вычисление данных входного канала</para>
 /// </summary>
 protected void BeginCalcCnlData(int cnlNum, SrezTableLight.CnlData initialCnlData)
 {
     curCnlNum           = cnlNum;
     this.initialCnlData = initialCnlData;
     initialCmdVal       = 0.0;
     initialCmdData      = null;
     calcInCnl           = true;
 }
Beispiel #5
0
 /// <summary>
 /// Initializes a new instance of the class
 /// <para>Конструктор</para>
 /// </summary>
 public CalcEngine()
 {
     curCnlNum     = -1;
     initalCnlData = SrezTableLight.CnlData.Empty;
     initalCmdVal  = 0.0;
     calcInCnl     = false;
     getCnlData    = null;
 }
Beispiel #6
0
 /// <summary>
 /// Initializes a new instance of the class
 /// <para>Конструктор</para>
 /// </summary>
 public CalcEngine()
 {
     curCnlNum = -1;
     initialCnlData = SrezTableLight.CnlData.Empty;
     initialCmdVal = 0.0;
     initialCmdData = null;
     calcInCnl = false;
     getCnlData = null;
 }
Beispiel #7
0
 /// <summary>
 /// Преобразовать данные тега КП в строку
 /// </summary>
 protected override string ConvertTagDataToStr(int signal, SrezTableLight.CnlData tagData)
 {
     if (tagData.Stat > 0 && !floatSignals.Contains(signal))
     {
         return(tagData.Val.ToString("F0"));
     }
     else
     {
         return(base.ConvertTagDataToStr(signal, tagData));
     }
 }
Beispiel #8
0
 private void dataTable2_RowChanged(object sender, DataRowChangeEventArgs e)
 {
     // transfer the changes to the snapshot table
     if (e.Action == DataRowAction.Change && selSrez != null)
     {
         DataRow           row     = e.Row;
         int               cnlNum  = (int)row["CnlNum"];
         SrezTable.CnlData cnlData = new SrezTableLight.CnlData((double)row["Val"], (int)row["Stat"]);
         selSrez.SetCnlData(cnlNum, cnlData);
         srezTable.MarkSrezAsModified(selSrez);
     }
 }
Beispiel #9
0
        /// <summary>
        /// Преобразовать данные тега КП в строку
        /// </summary>
        protected override string ConvertTagDataToStr(int signal, SrezTableLight.CnlData tagData)
        {
            if (tagData.Stat > 0)
            {
                if (signal == 1)
                {
                    return(tagData.Val.ToString("N0"));
                }
            }

            return(base.ConvertTagDataToStr(signal, tagData));
        }
Beispiel #10
0
 private void dataTable2_RowChanged(object sender, DataRowChangeEventArgs e)
 {
     // перенос изменений в таблицу срезов
     if (e.Action == DataRowAction.Change && selSrez != null)
     {
         DataRow           row     = e.Row;
         int               cnlNum  = (int)row["CnlNum"];
         SrezTable.CnlData cnlData = new SrezTableLight.CnlData((double)row["Val"], (int)row["Stat"]);
         selSrez.SetCnlData(cnlNum, cnlData);
         srezTable.MarkSrezAsModified(selSrez);
     }
 }
Beispiel #11
0
 /// <summary>
 /// Потокобезопасно установить текущие данные тега КП и признак их изменения
 /// </summary>
 protected void SetCurData(int tagIndex, SrezTableLight.CnlData newData)
 {
     lock (curData)
     {
         if (0 <= tagIndex && tagIndex < curData.Length)
         {
             SrezTableLight.CnlData curTagData = curData[tagIndex];
             curDataModified[tagIndex] |= curTagData.Val != newData.Val || curTagData.Stat != newData.Stat;
             curData[tagIndex]          = newData;
         }
     }
 }
Beispiel #12
0
            /// <summary>
            /// Конструктор
            /// </summary>
            public TagSrez(int tagCnt)
            {
                if (tagCnt <= 0)
                {
                    throw new ArgumentException("Tag count must be positive.", "tagCnt");
                }

                DateTime = DateTime.MinValue;
                KPTags   = new KPTag[tagCnt];
                TagData  = new SrezTableLight.CnlData[tagCnt];
                Descr    = "";
            }
Beispiel #13
0
 /// <summary>
 /// Потокобезопасно увеличить текущее значение тега КП без изменения статуса
 /// </summary>
 protected void IncCurData(int tagIndex, double number)
 {
     lock (curData)
     {
         if (0 <= tagIndex && tagIndex < curData.Length)
         {
             SrezTableLight.CnlData curTagData = curData[tagIndex];
             double newVal = curTagData.Val + number;
             curDataModified[tagIndex] |= number != 0;
             curData[tagIndex]          = new SrezTableLight.CnlData(newVal, curTagData.Stat);
         }
     }
 }
Beispiel #14
0
        private List <ActiveCnlList> ActiveCnl = new List <ActiveCnlList>();        // Создание списка Активных сигналов, где ActiveCnl.Cnl - номер сигнала, ActiveCnl.Name - Имя сигнала,
                                                                                    // ActiveCnl.Fotmat - Тип активной переменной, ActiveCnl.IdxTag индекс сигнала в KPTags, ActiveCnl.IdxValue - Индекс группы,
                                                                                    //  в которую входит сигнал, ActiveCnl.MenuName - Имя меню, которому принадлежит сигнал

        /// <summary>
        /// Преобразовать данные тега КП в строку
        /// </summary>
        protected override string ConvertTagDataToStr(int signal, SrezTableLight.CnlData tagData) // Необходимо продумать как передать сюда список типов переменных - текст, время, цифровое и т.д.
        {
            string strval  = "";
            bool   readstr = myTagId.TryGetValue(signal, out strval); // Чтение типа переменной, привязанной к сигналу

            if (tagData.Stat > 0)
            {
                if (strval == "DateTime")                           // Проверка сигнала на тип данных Время для отображения в текстовом виде в таблице Коммуникатора
                {
                    return(ScadaUtils.DecodeDateTime(tagData.Val).ToString());
                }
            }
            return(base.ConvertTagDataToStr(signal, tagData));
        }
Beispiel #15
0
 /// <summary>
 /// Потокобезопасно установить текущие данные как недостоверные
 /// </summary>
 protected void InvalidateCurData(int tagIndex, int tagCount)
 {
     lock (curData)
     {
         SrezTableLight.CnlData newData = SrezTableLight.CnlData.Empty;
         for (int i = 0; i < tagCount; i++)
         {
             SrezTableLight.CnlData curTagData = curData[tagIndex];
             curDataModified[tagIndex] |= curTagData.Val != newData.Val || curTagData.Stat != newData.Stat;
             curData[tagIndex]          = newData;
             tagIndex++;
         }
     }
 }
Beispiel #16
0
 /// <summary>
 /// Преобразовать данные тега КП в строку
 /// </summary>
 protected override string ConvertTagDataToStr(int signal, SrezTableLight.CnlData tagData)
 {
     if (strVals[signal - 1] != null)
     {
         return(strVals[signal - 1]);
     }
     else if (tagData.Stat > 0 && isBitsArr[signal - 1])
     {
         return("0x" + ((long)tagData.Val).ToString("X"));
     }
     else
     {
         return(base.ConvertTagDataToStr(signal, tagData));
     }
 }
Beispiel #17
0
        /// <summary>
        /// Converts the tag data to string.
        /// </summary>
        protected override string ConvertTagDataToStr(int signal, SrezTableLight.CnlData tagData)
        {
            if (tagData.Stat > 0)
            {
                switch (tagTypes[signal - 1])
                {
                case TagType.String:
                    return(ScadaUtils.DecodeAscii(tagData.Val));

                case TagType.DateTime:
                    return(ScadaUtils.DecodeDateTime(tagData.Val).ToLocalizedString());
                }
            }

            return(base.ConvertTagDataToStr(signal, tagData));
        }
Beispiel #18
0
        /// <summary>
        /// Converts the tag data to string.
        /// </summary>
        protected override string ConvertTagDataToStr(KPTag kpTag, SrezTableLight.CnlData tagData)
        {
            if (tagData.Stat > 0 && kpTag.Aux is TagType tagType)
            {
                switch (tagType)
                {
                case TagType.String:
                    return(ScadaUtils.DecodeAscii(tagData.Val));

                case TagType.DateTime:
                    return(ScadaUtils.DecodeDateTime(tagData.Val).ToLocalizedString());
                }
            }

            return(base.ConvertTagDataToStr(kpTag, tagData));
        }
Beispiel #19
0
        private void DataTable_RowChanged(object sender, DataRowChangeEventArgs e)
        {
            // pass row changes from dataTable to srezTable
            if (e.Action == DataRowAction.Change)
            {
                DataRow             row = e.Row;
                SrezTableLight.Srez srez;

                if (srezTable.SrezList.TryGetValue((DateTime)row["DateTime"], out srez))
                {
                    SrezTable.CnlData cnlData = new SrezTableLight.CnlData((double)row["Val"], (int)row["Stat"]);
                    srez.SetCnlData((int)row["CnlNum"], cnlData);
                    srezTable.MarkSrezAsModified(srez as SrezTable.Srez);
                }
            }
        }
Beispiel #20
0
        /// <summary>
        /// Установить текущие данные как недостоверные
        /// </summary>
        /// <remarks>Метод вызывается при обрыве соединения, если ConnRequired равно true</remarks>
        public virtual void InvalidateCurData()
        {
            lock (curData)
            {
                SrezTableLight.CnlData newData = SrezTableLight.CnlData.Empty;
                int tagCnt = curData.Length;
                for (int tagInd = 0; tagInd < tagCnt; tagInd++)
                {
                    SrezTableLight.CnlData curTagData = curData[tagInd];
                    curDataModified[tagInd] |= curTagData.Val != newData.Val || curTagData.Stat != newData.Stat;
                    curData[tagInd]          = newData;
                }
            }

            WorkState = WorkStates.Error;
        }
Beispiel #21
0
 public string GetCurCnlData(int cnlNum)
 {
     try
     {
         AppData.CheckLoggedOn();
         SrezTableLight.CnlData cnlData = AppData.DataAccess.GetCurCnlData(cnlNum);
         return(JsSerializer.Serialize(new DataTransferObject(cnlData)));
     }
     catch (Exception ex)
     {
         AppData.Log.WriteException(ex, Localization.UseRussian ?
                                    "Ошибка при получении текущих данных входного канала {0}" :
                                    "Error getting current data of the input channel {0}", cnlNum);
         return(GetErrorDtoJs(ex));
     }
 }
Beispiel #22
0
        /// <summary>
        /// Converts the tag data to string.
        /// </summary>
        protected override string ConvertTagDataToStr(KPTag kpTag, SrezTableLight.CnlData tagData)
        {
            if (tagData.Stat > 0)
            {
                if (kpTag.Index == TagIndex.NotifCounter)
                {
                    return(tagData.Val.ToString("N0"));
                }
                else if (kpTag.Index == TagIndex.ResponseStatus)
                {
                    return(tagData.Val.ToString("N0") + " (" + (HttpStatusCode)tagData.Val + ")");
                }
            }

            return(base.ConvertTagDataToStr(kpTag, tagData));
        }
Beispiel #23
0
 /// <summary>
 /// Потокобезопасно установить текущие данные как недостоверные
 /// </summary>
 protected void InvalidateCurData(int tagIndex, int tagCount)
 {
     lock (curData)
     {
         SrezTableLight.CnlData newData = SrezTableLight.CnlData.Empty;
         for (int i = 0, len = curData.Length; i < tagCount && tagIndex < len; i++)
         {
             if (tagIndex >= 0)
             {
                 SrezTableLight.CnlData curTagData = curData[tagIndex];
                 curDataModified[tagIndex] |= curTagData.Val != newData.Val || curTagData.Stat != newData.Stat;
                 curData[tagIndex]          = newData;
             }
             tagIndex++;
         }
     }
 }
Beispiel #24
0
        /// <summary>
        /// Преобразовать данные тега КП в строку
        /// </summary>
        protected override string ConvertTagDataToStr(int signal, SrezTableLight.CnlData tagData)
        {
            if (tagData.Stat > 0)
            {
                if (signal == 1)
                {
                    return(tagData.Val > 0 ?
                           (Localization.UseRussian ? "Есть" : "Yes") :
                           (Localization.UseRussian ? "Нет" : "No"));
                }
                else if (signal == 2)
                {
                    return(((int)tagData.Val).ToString());
                }
            }

            return(base.ConvertTagDataToStr(signal, tagData));
        }
Beispiel #25
0
        /// <summary>
        /// Получить точки связки трендов в виде JavaScript
        /// </summary>
        protected string GetTrendPointsJs(TrendBundle trendBundle, int trendInd)
        {
            StringBuilder sbTrendPoints = new StringBuilder("[");
            InCnlProps    cnlProps      = cnlPropsArr[trendInd];

            if (trendBundle != null)
            {
                foreach (TrendBundle.Point point in trendBundle.Series)
                {
                    SrezTableLight.CnlData cnlData = point.CnlData[trendInd];
                    sbTrendPoints
                    .Append(TrendPointToJs(cnlData.Val, cnlData.Stat, cnlProps))
                    .Append(", ");
                }
            }

            sbTrendPoints.Append("]");
            return(sbTrendPoints.ToString());
        }
Beispiel #26
0
        protected override string ConvertTagDataToStr(int signal, SrezTableLight.CnlData tagData)
        {
            if (tagData.Stat > 0)
            {
                if (signal == CONNECT_SIGNAL)
                {
                    return(tagData.Val > 0 ? "Yes" : "No");
                }
                else if (signal == RECORD_SIGNAL)
                {
                    return(tagData.Val > 0 ? "On" : "Off");
                }
                else if (signal <= FAILED_MSG_SIGNAL && signal < TELEMETRY_START_SIGNAL)
                {
                    return(tagData.Val.ToString("N0"));
                }
            }

            return(base.ConvertTagDataToStr(signal, tagData));
        }
Beispiel #27
0
        public string GetCurCnlDataExt(int cnlNum)
        {
            try
            {
                AppData.CheckLoggedOn();
                CnlDataExtDTO          cnlDataExtDTO = new CnlDataExtDTO(cnlNum);
                DataAccess             dataAccess    = AppData.DataAccess;
                DateTime               dataAge;
                SrezTableLight.CnlData cnlData = dataAccess.GetCurCnlData(cnlNum, out dataAge);
                cnlDataExtDTO.Val  = cnlData.Val;
                cnlDataExtDTO.Stat = cnlData.Stat;

                string emptyVal;
                if (DataFormatter.CurDataVisible(dataAge, DateTime.Now, out emptyVal))
                {
                    InCnlProps cnlProps = dataAccess.GetCnlProps(cnlNum);
                    string     text;
                    string     textWithUnit;
                    DataFormatter.FormatCnlVal(cnlData.Val, cnlData.Stat, cnlProps, out text, out textWithUnit);

                    cnlDataExtDTO.Text         = text;
                    cnlDataExtDTO.TextWithUnit = textWithUnit;
                    cnlDataExtDTO.Color        = DataFormatter.GetCnlValColor(cnlData.Val, cnlData.Stat, cnlProps,
                                                                              dataAccess.GetColorByStat);
                }
                else
                {
                    cnlDataExtDTO.Text         = emptyVal;
                    cnlDataExtDTO.TextWithUnit = emptyVal;
                }

                return(JsSerializer.Serialize(cnlDataExtDTO));
            }
            catch (Exception ex)
            {
                AppData.Log.WriteException(ex, Localization.UseRussian ?
                                           "Ошибка при получении расширенных текущих данных входного канала {0}" :
                                           "Error getting extended current data of the input channel {0}", cnlNum);
                return("");
            }
        }
Beispiel #28
0
        public string GetCurCnlData(int cnlNum)
        {
            try
            {
                UserRights userRights;
                AppData.CheckLoggedOn(out userRights);

                if (!userRights.ViewAllRight)
                {
                    throw new ScadaException(CommonPhrases.NoRights);
                }

                SrezTableLight.CnlData cnlData = AppData.DataAccess.GetCurCnlData(cnlNum);
                return(JsSerializer.Serialize(new DataTransferObject(cnlData)));
            }
            catch (Exception ex)
            {
                AppData.Log.WriteException(ex, Localization.UseRussian ?
                                           "Ошибка при получении текущих данных входного канала {0}" :
                                           "Error getting current data of the input channel {0}", cnlNum);
                return(GetErrorDtoJs(ex));
            }
        }
Beispiel #29
0
        /// <summary>
        /// Преобразовать среза параметров в срез входных каналов
        /// </summary>
        private SrezTableLight.Srez ConvertSrez(KPLogic.ParamSrez paramSrez)
        {
            List <int> bindedIndexes;
            int        cnlCnt;

            if (paramSrez == null)
            {
                bindedIndexes = null;
                cnlCnt        = 0;
            }
            else
            {
                bindedIndexes = paramSrez.GetBindedParamIndexes();
                cnlCnt        = bindedIndexes.Count;
            }

            if (cnlCnt == 0)
            {
                return(null);
            }
            else
            {
                SrezTableLight.Srez srez = new SrezTableLight.Srez(paramSrez.DateTime, cnlCnt);

                for (int i = 0; i < cnlCnt; i++)
                {
                    int paramInd = bindedIndexes[i];
                    srez.CnlNums[i] = paramSrez.KPParams[paramInd].CnlNum;
                    KPLogic.ParamData      paramData = paramSrez.Data[paramInd];
                    SrezTableLight.CnlData cnlData   = new SrezTableLight.CnlData(paramData.Val, paramData.Stat);
                    srez.CnlData[i] = cnlData;
                }

                return(srez);
            }
        }
Beispiel #30
0
 /// <summary>
 /// Ends the input channel data calculation
 /// <para>Завершить вычисление данных входного канала</para>
 /// </summary>
 private void EndCalcCnlData()
 {
     curCnlNum = -1;
     initialCnlData = SrezTableLight.CnlData.Empty;
     calcInCnl = false;
 }
Beispiel #31
0
            /// <summary>
            /// Конструктор
            /// </summary>
            public TagSrez(int tagCnt)
            {
                if (tagCnt <= 0)
                    throw new ArgumentException("Tag count must be positive.", "tagCnt");

                DateTime = DateTime.MinValue;
                KPTags = new KPTag[tagCnt];
                TagData = new SrezTableLight.CnlData[tagCnt];
                Descr = "";
            }
Beispiel #32
0
        /// <summary>
        /// Вычислить дорасчётные каналы
        /// </summary>
        private void CalcDRCnls(List<InCnl> inCnls, SrezTableLight.Srez srez, bool genEvents)
        {
            lock (calculator)
            {
                try
                {
                    procSrez = srez;

                    foreach (InCnl inCnl in inCnls)
                    {
                        int cnlInd = srez.GetCnlIndex(inCnl.CnlNum);

                        if (cnlInd >= 0)
                        {
                            // вычисление новых данных входного канала
                            SrezTableLight.CnlData oldCnlData = srez.CnlData[cnlInd];
                            SrezTableLight.CnlData newCnlData =
                                new SrezTableLight.CnlData(oldCnlData.Val, BaseValues.CnlStatuses.Defined);
                            CalcCnlData(inCnl, oldCnlData, ref newCnlData);

                            // запись новых данных в срез
                            srez.CnlData[cnlInd] = newCnlData;

                            // генерация события
                            if (genEvents)
                                GenEvent(inCnl, oldCnlData, newCnlData);
                        }
                    }
                }
                catch (Exception ex)
                {
                    AppLog.WriteAction((Localization.UseRussian ?
                        "Ошибка при вычислении дорасчётных каналов: " :
                        "Error calculating channels: ") + ex.Message, Log.ActTypes.Exception);
                }
                finally
                {
                    procSrez = null;
                }
            }
        }
Beispiel #33
0
 /// <summary>
 /// Starts the input channel data calculation
 /// <para>Начать вычисление данных входного канала</para>
 /// </summary>
 private void BeginCalcCnlData(int cnlNum, SrezTableLight.CnlData initialCnlData)
 {
     curCnlNum = cnlNum;
     this.initialCnlData = initialCnlData;
     initialCmdVal = 0.0;
     initialCmdData = null;
     calcInCnl = true;
 }
Beispiel #34
0
 private void dataTable2_RowChanged(object sender, DataRowChangeEventArgs e)
 {
     // перенос изменений в таблицу срезов
     if (e.Action == DataRowAction.Change && selSrez != null)
     {
         DataRow row = e.Row;
         int cnlNum = (int)row["CnlNum"];
         SrezTable.CnlData cnlData = new SrezTableLight.CnlData((double)row["Val"], (int)row["Stat"]);
         selSrez.SetCnlData(cnlNum, cnlData);
         srezTable.MarkSrezAsModified(selSrez);
     }
 }
Beispiel #35
0
 /// <summary>
 /// Set the current input channel of the formula and its data
 /// <para>Установить текущий входной канал формулы и его данные</para>
 /// </summary>
 public void SetCurCnl(int cnlNum, SrezTableLight.CnlData cnlData)
 {
     BeginCalcCnlData(cnlNum, cnlData);
 }
Beispiel #36
0
        /// <summary>
        /// Преобразовать среза параметров в срез входных каналов
        /// </summary>
        private SrezTableLight.Srez ConvertSrez(KPLogic.ParamSrez paramSrez)
        {
            List<int> bindedIndexes;
            int cnlCnt;

            if (paramSrez == null)
            {
                bindedIndexes = null;
                cnlCnt = 0;
            }
            else
            {
                bindedIndexes = paramSrez.GetBindedParamIndexes();
                cnlCnt = bindedIndexes.Count;
            }

            if (cnlCnt == 0)
            {
                return null;
            }
            else
            {
                SrezTableLight.Srez srez = new SrezTableLight.Srez(paramSrez.DateTime, cnlCnt);

                for (int i = 0; i < cnlCnt; i++)
                {
                    int paramInd = bindedIndexes[i];
                    srez.CnlNums[i] = paramSrez.KPParams[paramInd].CnlNum;
                    KPLogic.ParamData paramData = paramSrez.Data[paramInd];
                    SrezTableLight.CnlData cnlData = new SrezTableLight.CnlData(paramData.Val, paramData.Stat);
                    srez.CnlData[i] = cnlData;
                }

                return srez;
            }
        }
Beispiel #37
0
        /// <summary>
        /// Установить недостоверность неактивных каналов
        /// </summary>
        private void SetUnreliable()
        {
            if (Settings.InactUnrelTime > 0)
            {
                TimeSpan inactUnrelSpan = TimeSpan.FromMinutes(Settings.InactUnrelTime);
                DateTime nowDT = DateTime.Now;
                int cnlCnt = srezDescr.CnlNums.Length;

                for (int i = 0; i < cnlCnt; i++)
                {
                    InCnl inCnl = inCnls.Values[i];
                    int cnlTypeID = inCnl.CnlTypeID;

                    if ((cnlTypeID == BaseValues.CnlTypes.TS || cnlTypeID == BaseValues.CnlTypes.TI) &&
                        curSrez.CnlData[i].Stat > BaseValues.CnlStatuses.Undefined &&
                        nowDT - activeDTs[i] > inactUnrelSpan)
                    {
                        // установка недостоверного статуса
                        SrezTableLight.CnlData oldCnlData = curSrez.CnlData[i];
                        SrezTableLight.CnlData newCnlData =
                            new SrezTableLight.CnlData(oldCnlData.Val, BaseValues.CnlStatuses.Unreliable);
                        curSrez.CnlData[i] = newCnlData;
                        curSrezMod = true;

                        // генерация события
                        GenEvent(inCnl, oldCnlData, newCnlData);
                    }
                }
            }
        }
Beispiel #38
0
 /// <summary>
 /// Starts the command value or data calculation
 /// <para>Начать вычисление значения или данных команды</para>
 /// </summary>
 private void BeginCalcCmdData(int ctrlCnlNum, double initialCmdVal, byte[] initialCmdData)
 {
     curCnlNum = ctrlCnlNum;
     this.initialCnlData = SrezTableLight.CnlData.Empty;
     this.initialCmdVal = initialCmdVal;
     this.initialCmdData = initialCmdData;
 }
Beispiel #39
0
 /// <summary>
 /// Converts the tag data to string.
 /// </summary>
 protected override string ConvertTagDataToStr(KPTag kpTag, SrezTableLight.CnlData tagData)
 {
     return(tagData.Stat > 0 && (kpTag.Signal == 2 || kpTag.Signal == 4) ?
            tagData.Val > 0 ? CommPhrases.On : CommPhrases.Off :
            base.ConvertTagDataToStr(kpTag, tagData));
 }
Beispiel #40
0
 /// <summary>
 /// Starts the command value calculation
 /// <para>Начать вычисление значения команды</para>
 /// </summary>
 private void BeginCalcCmdVal(int ctrlCnlNum, double initalCmdVal)
 {
     curCnlNum = ctrlCnlNum;
     this.initalCnlData = SrezTableLight.CnlData.Empty;
     this.initalCmdVal = initalCmdVal;
 }