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); } }
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); } }
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); } }