Exemple #1
0
        public bool GetBool(string tagName)
        {
            if (_server == null)
            {
                return(false);
            }
            ITag tag = _server[tagName];

            switch (tag.Address.VarType)
            {
            case DataType.BOOL:
                return(tag.Value.Boolean);

            case DataType.BYTE:
                return(Convert.ToBoolean(tag.Value.Byte));

            case DataType.WORD:
                return(Convert.ToBoolean(tag.Value.Word));

            case DataType.SHORT:
                return(Convert.ToBoolean(tag.Value.Int16));

            case DataType.DWORD:
                return(Convert.ToBoolean(tag.Value.DWord));

            case DataType.INT:
                return(Convert.ToBoolean(tag.Value.Int32));

            case DataType.FLOAT:
                return(Convert.ToBoolean(tag.Value.Single));

            case DataType.STR:
                return(Convert.ToBoolean(tag.ToString()));

            default:
                return(false);
            }
        }
Exemple #2
0
        public int GetInt(string tagName)
        {
            if (_server == null)
            {
                return(0);
            }
            ITag tag = _server[tagName];

            switch (tag.Address.VarType)
            {
            case DataType.BOOL:
                return(tag.Value.Boolean ? 1 : 0);

            case DataType.BYTE:
                return(tag.Value.Byte);

            case DataType.WORD:
                return(tag.Value.Word);

            case DataType.SHORT:
                return(tag.Value.Int16);

            case DataType.DWORD:
                return((int)tag.Value.DWord);

            case DataType.INT:
                return(tag.Value.Int32);

            case DataType.FLOAT:
                return(Convert.ToInt32(tag.Value.Single));

            case DataType.STR:
                return(int.Parse(tag.ToString()));

            default:
                return(0);
            }
        }
Exemple #3
0
        public static float ScaleToValue(this ITag tag, Storage value)
        {
            DataType type = tag.Address.VarType;

            if (type == DataType.BOOL)
            {
                return(value.Boolean ? 1f : 0f);
            }
            IDataServer srv  = tag.Parent.Server;
            int         ind  = srv.GetScaleByID(tag.ID);
            Scaling     meta = ind < 0 ? Scaling.Empty : srv.ScalingList[ind];

            if (meta.ScaleType == ScaleType.None)
            {
                switch (type)
                {
                case DataType.BYTE:
                    return((float)value.Byte);

                case DataType.WORD:
                case DataType.SHORT:
                    return((float)value.Int16);

                case DataType.INT:
                    return((float)value.Int32);

                case DataType.FLOAT:
                    return(value.Single);

                case DataType.STR:
                    return(float.Parse(tag.ToString()));

                default:
                    return(0f);
                }
            }
            else
            {
                double temp;
                switch (type)
                {
                case DataType.BYTE:
                    temp = (value.Byte - meta.RawLo) / (meta.RawHi - meta.RawLo);
                    break;

                case DataType.WORD:
                case DataType.SHORT:
                    temp = (value.Int16 - meta.RawLo) / (meta.RawHi - meta.RawLo);
                    break;

                case DataType.INT:
                    temp = (value.Int32 - meta.RawLo) / (meta.RawHi - meta.RawLo);
                    break;

                case DataType.FLOAT:
                    temp = (value.Single - meta.RawLo) / (meta.RawHi - meta.RawLo);
                    break;

                default:
                    return(0f);
                }
                if (meta.ScaleType == ScaleType.SquareRoot)
                {
                    temp = Math.Sqrt(temp);
                }
                return((meta.EUHi - meta.EULo) * (float)temp + meta.EULo);
            }
        }