Exemple #1
0
        /// <summary cref="IEncodeable.IsEqual(IEncodeable)" />
        public virtual bool IsEqual(IEncodeable encodeable)
        {
            if (Object.ReferenceEquals(this, encodeable))
            {
                return(true);
            }

            MachineDataType value = encodeable as MachineDataType;

            if (value == null)
            {
                return(false);
            }

            if (!Utils.IsEqual(m_machineName, value.m_machineName))
            {
                return(false);
            }
            if (!Utils.IsEqual(m_manufacturer, value.m_manufacturer))
            {
                return(false);
            }
            if (!Utils.IsEqual(m_serialNumber, value.m_serialNumber))
            {
                return(false);
            }
            if (!Utils.IsEqual(m_machineState, value.m_machineState))
            {
                return(false);
            }

            return(true);
        }
        /// <summary>
        /// Invokes the method, returns the result and output argument.
        /// </summary>
        protected override ServiceResult Call(
            ISystemContext _context,
            NodeId _objectId,
            IList <object> _inputArguments,
            IList <object> _outputArguments)
        {
            if (OnCall == null)
            {
                return(base.Call(_context, _objectId, _inputArguments, _outputArguments));
            }

            ServiceResult result = null;

            string machineName = (string)_inputArguments[0];

            MachineDataType machineData = (MachineDataType)_outputArguments[0];

            if (OnCall != null)
            {
                result = OnCall(
                    _context,
                    this,
                    _objectId,
                    machineName,
                    ref machineData);
            }

            _outputArguments[0] = machineData;

            return(result);
        }
        private ServiceResult OnGetMachineData(ISystemContext context, MethodState method, NodeId objectid, string machineName, ref MachineDataType machinedata)
        {
            machinedata = new MachineDataType {
                MachineName = machineName
            };

            if (machineName == "Machine #1")
            {
                machinedata.Manufacturer = machine1_.MachineData.Value.Manufacturer;
                machinedata.SerialNumber = machine1_.MachineData.Value.SerialNumber;
                machinedata.MachineState = machine1_.MachineData.Value.MachineState;
            }
            else if (machineName == "Machine #2")
            {
                machinedata.Manufacturer = machine1_.MachineData.Value.Manufacturer;
                machinedata.SerialNumber = machine1_.MachineData.Value.SerialNumber;
                machinedata.MachineState = machine1_.MachineData.Value.MachineState;
            }
            else
            {
                machinedata.Manufacturer = "Unknown";
                machinedata.SerialNumber = "Unknown";
                machinedata.MachineState = MachineStateDataType.Failed;
            }
            return(ServiceResult.Good);
        }
Exemple #4
0
        /*public int MaxRunningTasks
         * {
         *  get { return _scheduler.MaximumConcurrencyLevel; }
         *  set
         *  {
         *      TaskStop();
         *      _scheduler = new LimitedConcurrencyLevelTaskScheduler(value);
         *  }
         * }*/

        /// <summary>
        /// 构造一个TaskManager
        /// </summary>
        /// <param name="maxRunningTask">同时可以运行的任务数</param>
        /// <param name="getCycle">读取数据的时间间隔(秒)</param>
        /// <param name="keepConnect">读取数据后是否保持连接</param>
        /// <param name="dataType">获取与设置数据的方式</param>
        public TaskManager(/*int maxRunningTask,*/ int getCycle, bool keepConnect, MachineDataType dataType = MachineDataType.CommunicationTag)
        {
            //_scheduler = new LimitedConcurrencyLevelTaskScheduler(maxRunningTask);
            _machines         = new HashSet <BaseMachine>(new BaseMachineEqualityComparer());
            _unlinkedMachines = new HashSet <BaseMachine>(new BaseMachineEqualityComparer());
            _getCycle         = getCycle;
            KeepConnect       = keepConnect;
            MachineDataType   = dataType;
        }
Exemple #5
0
        /// <summary cref="Object.MemberwiseClone" />
        public new object MemberwiseClone()
        {
            MachineDataType clone = (MachineDataType)base.MemberwiseClone();

            clone.m_machineName  = (string)Utils.Clone(this.m_machineName);
            clone.m_manufacturer = (string)Utils.Clone(this.m_manufacturer);
            clone.m_serialNumber = (string)Utils.Clone(this.m_serialNumber);
            clone.m_machineState = (MachineStateDataType)Utils.Clone(this.m_machineState);

            return(clone);
        }
Exemple #6
0
 public TaskManager(int maxRunningTask, int getCycle, bool keepConnect,
                    MachineDataType dataType = MachineDataType.CommunicationTag)
     : base(maxRunningTask, getCycle, keepConnect, dataType)
 {
 }