Exemplo n.º 1
0
        private static void UpdateChannel(FreeSCADA.CLServer.ChannelState state, RemoutingChannel channel)
        {
            object channelValue = null;
            Type   valueType    = Type.GetType(state.Type);

            if (valueType != null)
            {
                channelValue = Convert.ChangeType(state.Value, valueType);
            }
            else
            {
                channelValue = Convert.ChangeType(state.Value, channel.Type);
            }

            ChannelStatusFlags flags = ChannelStatusFlags.Unknown;

            switch (state.Status)
            {
            case FreeSCADA.CLServer.ChannelStatusFlags.Bad:
                flags = ChannelStatusFlags.Bad;
                break;

            case FreeSCADA.CLServer.ChannelStatusFlags.Good:
                flags = ChannelStatusFlags.Good;
                break;

            case FreeSCADA.CLServer.ChannelStatusFlags.NotUsed:
                flags = ChannelStatusFlags.NotUsed;
                break;
            }

            channel.DoUpdate(channelValue, state.ModifyTime, flags);
        }
Exemplo n.º 2
0
 private void UpdateChannelFunc(IChannel channel)
 {
     if (statusFlags != channel.StatusFlags)
     {
         statusFlags = channel.StatusFlags;
         (ToolTip as ToolTip).Content = "Variable: " + channel.PluginId + "." + channel.Name + ", Status: " + channel.Status;
     }
     this.InvalidateVisual();
 }
Exemplo n.º 3
0
 public virtual void DoUpdate(object value, DateTime externalTime, ChannelStatusFlags status)
 {
     try
     {
         InternalSetValue(value, externalTime, status);
     }
     catch (Exception e)
     {
         Env.Current.Logger.LogError(e.Message);
     }
 }
Exemplo n.º 4
0
        public BaseChannel(string name, bool readOnly, ICommunicationPlug plugin, Type type)
        {
            this.name     = name;
            this.readOnly = readOnly;
            this.plugin   = plugin;
            this.type     = type;

            defaultValue = type.IsValueType ? Activator.CreateInstance(type) : null;
            if (type == typeof(string))
            {
                defaultValue = "";
            }
            value = defaultValue;

            modifyTime = DateTime.MinValue;
            status     = ChannelStatusFlags.Unknown;
        }
Exemplo n.º 5
0
        protected void InternalSetValue(object value, DateTime externalTime, ChannelStatusFlags status)
        {
            bool fire = false;

            lock (this)
            {
                object old = this.value;

                if (value != null)
                {
                    this.value  = value;
                    this.type   = value.GetType();
                    this.status = status;
                }
                else
                {
                    this.value  = defaultValue;
                    this.type   = defaultValue.GetType();
                    this.status = ChannelStatusFlags.Unknown;
                }

                modifyTime = externalTime;
                if (old != null)
                {
                    fire = !old.Equals(this.value);
                }
                else
                {
                    fire = true;
                }
            }
            if (fire)
            {
                FireValueChanged();
            }
        }
Exemplo n.º 6
0
 public virtual void DoUpdate(object value, DateTime externalTime, ChannelStatusFlags status)
 {
     InternalSetValue(value, externalTime, status);
 }