예제 #1
0
파일: BaseView.cs 프로젝트: iyus/scada
 /// <summary>
 /// Привязать свойства входных каналов к элементам представления
 /// </summary>
 public virtual void BindCnlProps(CnlProps[] cnlPropsArr)
 {
 }
예제 #2
0
파일: MainData.cs 프로젝트: iyus/scada
        /// <summary>
        /// ������������� �������� �������� ������
        /// </summary>
        /// <remarks>��� �������� �������� dataDT ����� DateTime.MinValue</remarks>
        public string FormatCnlVal(double val, int stat, CnlProps cnlProps, bool showUnit, bool getColor, 
            DateTime dataDT, DateTime nowDT, out bool isNumber, out string color,
            string decSep = null, string grSep = null)
        {
            string result = "";
            isNumber = false;
            color = "black";

            try
            {
                // ����������� ����� ������� ������������ ������
                int unitArrLen = cnlProps == null || cnlProps.UnitArr == null ? 0 : cnlProps.UnitArr.Length;

                // ����������� �����
                if (cnlProps != null && getColor)
                {
                    if (!cnlProps.ShowNumber && unitArrLen == 2 && stat > 0 &&
                        stat != BaseValues.ParamStat.FormulaError && stat != BaseValues.ParamStat.Unreliable)
                    {
                        color = val > 0 ? "green" : "red";
                    }
                    else
                    {
                        Monitor.Enter(baseLock);
                        try
                        {
                            string colorByStat;
                            if (GetColorByStat(stat, out colorByStat))
                                color = colorByStat;
                        }
                        finally
                        {
                            Monitor.Exit(baseLock);
                        }
                    }
                }

                // ����������� ���������� ������
                if (cnlProps == null || cnlProps.ShowNumber)
                {
                    string unit = showUnit && unitArrLen > 0 ? " " + cnlProps.UnitArr[0] : "";
                    isNumber = unit == "";

                    nfi.NumberDecimalDigits = cnlProps == null ? 3 : cnlProps.DecDigits;
                    nfi.NumberDecimalSeparator = decSep == null ? defDecSep : decSep;
                    nfi.NumberGroupSeparator = grSep == null ? defGrSep : grSep;
                    result = val.ToString("N", nfi) + unit;
                }
                else if (unitArrLen > 0)
                {
                    int unitInd = (int)val;
                    if (unitInd < 0)
                        unitInd = 0;
                    else if (unitInd >= unitArrLen)
                        unitInd = unitArrLen - 1;
                    result = cnlProps.UnitArr[unitInd];
                }

                // ��������� ���������� ������, ���� �������� ������ �� ����������
                if (dataDT == DateTime.MinValue)
                {
                    if ((nowDT - tblCur.FileModTime).TotalMinutes > CurSrezShowTime) // ������� ���� �������
                    {
                        result = "";
                        isNumber = false;
                    }
                    else if (stat == 0)
                    {
                        result = "---";
                        isNumber = false;
                    }
                }
                else if (stat == 0)
                {
                    result = "---";
                    isNumber = false;

                    if (dataDT.Date > nowDT.Date)
                    {
                        result = "";
                    }
                    else if (dataDT.Date == nowDT.Date)
                    {
                        if (dataDT.Hour > nowDT.Hour + 1)
                            result = "";
                        else if (dataDT.Hour == nowDT.Hour + 1)
                        {
                            result = "***";
                            color = "green";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string cnlNumStr = cnlProps == null ? "" : " " + cnlProps.CnlNum;
                AppData.Log.WriteAction(string.Format(Localization.UseRussian ?
                    "������ ��� �������������� �������� �������� ������{0}: {1}" :
                    "Error formatting input channel{0} value: {1}", cnlNumStr, ex.Message), Log.ActTypes.Exception);
            }

            return result;
        }
예제 #3
0
 /// <summary>
 /// Bind input channel properties to the elements of the view
 /// <para>Привязать свойства входных каналов к элементам представления</para>
 /// </summary>
 public override void BindCnlProps(CnlProps[] cnlPropsArr)
 {
     // вызов метода базового класса
     base.BindCnlProps(cnlPropsArr);
 }
예제 #4
0
파일: MainData.cs 프로젝트: iyus/scada
        /// <summary>
        /// ��������� �������� ������� �������
        /// </summary>
        private void FillCnlProps()
        {
            Monitor.Enter(baseLock);
            AppData.Log.WriteAction(Localization.UseRussian ? "���������� ������� ������� �������" :
                "Fill input channels properties", Log.ActTypes.Action);

            try
            {
                int inCnlCnt = tblInCnl.Rows.Count; // ���������� ������� �������

                if (inCnlCnt == 0)
                {
                    cnlPropsArr = null;
                }
                else
                {
                    if (0 < maxCnlCnt && maxCnlCnt < inCnlCnt)
                        inCnlCnt = maxCnlCnt;
                    CnlProps[] newCnlPropsArr = new CnlProps[inCnlCnt];

                    for (int i = 0; i < inCnlCnt; i++)
                    {
                        DataRowView rowView = tblInCnl.DefaultView[i];
                        int cnlNum = (int)rowView["CnlNum"];
                        CnlProps cnlProps = GetCnlProps(cnlNum);
                        if (cnlProps == null)
                            cnlProps = new CnlProps(cnlNum);

                        // ����������� �������, �� ������������ ������� ������
                        cnlProps.CnlName = (string)rowView["Name"];
                        cnlProps.CtrlCnlNum = (int)rowView["CtrlCnlNum"];
                        cnlProps.EvSound = (bool)rowView["EvSound"];

                        // ����������� ������ � ������������ �������
                        cnlProps.ObjNum = (int)rowView["ObjNum"];
                        tblObj.DefaultView.RowFilter = "ObjNum = " + cnlProps.ObjNum;
                        cnlProps.ObjName = tblObj.DefaultView.Count > 0 ? (string)tblObj.DefaultView[0]["Name"] : "";

                        // ����������� ������ � ������������ ��
                        cnlProps.KPNum = (int)rowView["KPNum"];
                        tblKP.DefaultView.RowFilter = "KPNum = " + cnlProps.KPNum;
                        cnlProps.KPName = tblKP.DefaultView.Count > 0 ? (string)tblKP.DefaultView[0]["Name"] : "";

                        // ����������� ������������ ��������� � ����� ����� ������
                        tblParam.DefaultView.RowFilter = "ParamID = " + rowView["ParamID"];
                        if (tblParam.DefaultView.Count > 0)
                        {
                            DataRowView paramRowView = tblParam.DefaultView[0];
                            cnlProps.ParamName = (string)paramRowView["Name"];
                            object iconFileName = paramRowView["IconFileName"];
                            cnlProps.IconFileName = iconFileName == DBNull.Value ? "" : iconFileName.ToString();
                        }
                        else
                        {
                            cnlProps.ParamName = "";
                            cnlProps.IconFileName = "";
                        }

                        // ����������� ������� ������
                        tblFormat.DefaultView.RowFilter = "FormatID = " + rowView["FormatID"];
                        if (tblFormat.DefaultView.Count > 0)
                        {
                            DataRowView formatRowView = tblFormat.DefaultView[0];
                            cnlProps.ShowNumber = (bool)formatRowView["ShowNumber"];
                            cnlProps.DecDigits = (int)formatRowView["DecDigits"];
                        }

                        // ����������� ������������
                        tblUnit.DefaultView.RowFilter = "UnitID = " + rowView["UnitID"];
                        if (tblUnit.DefaultView.Count > 0)
                        {
                            string sign = (string)tblUnit.DefaultView[0]["Sign"];
                            cnlProps.UnitArr = sign.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                            for (int j = 0; j < cnlProps.UnitArr.Length; j++)
                                cnlProps.UnitArr[j] = cnlProps.UnitArr[j].Trim();
                            if (cnlProps.UnitArr.Length == 1 && cnlProps.UnitArr[0] == "")
                                cnlProps.UnitArr = null;
                        }
                        else
                        {
                            cnlProps.UnitArr = null;
                        }

                        newCnlPropsArr[i] = cnlProps;
                    }

                    cnlPropsArr = newCnlPropsArr;
                }
            }
            catch (Exception ex)
            {
                AppData.Log.WriteAction((Localization.UseRussian ? "������ ��� ���������� ������� ������� �������: " :
                    "Error filling input channels properties: ") + ex.Message, Log.ActTypes.Exception);
            }
            finally
            {
                Monitor.Exit(baseLock);
            }
        }
예제 #5
0
파일: TableView.cs 프로젝트: iyus/scada
        /// <summary>
        /// Привязать свойства входных каналов к элементам представления
        /// </summary>
        public override void BindCnlProps(CnlProps[] cnlPropsArr)
        {
            base.BindCnlProps(cnlPropsArr);

            if (cnlPropsArr != null)
            {
                foreach (Item item in Items)
                {
                    int ind = Array.BinarySearch(cnlPropsArr, item.CnlNum);
                    if (ind >= 0)
                    {
                        CnlProps cnlProps = cnlPropsArr[ind];
                        item.CnlProps = cnlProps;
                        if (cnlProps.CtrlCnlNum > 0)
                        {
                            item.CtrlCnlNum = cnlProps.CtrlCnlNum;
                            AddCtrlCnlNum(cnlProps.CtrlCnlNum);
                        }
                    }
                    else
                    {
                        item.CnlProps = null;
                    }
                }
            }
        }