Example #1
0
        /// <summary>
        /// Starts the view monitor.
        /// </summary>
        /// <param name="callbackEndpointAddress">The callback endpoint address.</param>
        /// <param name="measurements">The measurements.</param>
        /// <param name="error">The error.</param>
        /// <param name="exception">The exception.</param>
        /// <returns><c>true</c> if the operation succeeds, <c>false</c> otherwise</returns>
        private bool StartViewMonitor(string callbackEndpointAddress, ConfiguredMeasurements measurements, out uint error, out Exception exception)
        {
            if (this.ViewMonitorScheduler.IsRunning)
            {
                error     = ResultCodes.MonitorAlreadyRunning;
                exception = null;
                return(false);
            }

            if (measurements == null)
            {
                error     = ResultCodes.MissingArgument;
                exception = null;
                return(false);
            }

            // Checks gateway validity.
            if (!OpcMonitor.IsGatewayValid(this.DataManager.Configuration.Gateway))
            {
                error     = ResultCodes.InvalidGateway;
                exception = null;
                return(false);
            }

            // Start monitor.
            this.ViewMonitorScheduler.Start(this.DataManager.Configuration, measurements, ViewMonitorRefreshRate);
            this.ViewMonitorTimeoutHandler.SetCurrentTime();
            this.MonitorCallbackAddress = callbackEndpointAddress;
            error     = ResultCodes.Success;
            exception = null;
            return(true);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="OpcMonitor"/> class.
 /// </summary>
 /// <param name="configuration">The current configuration.</param>
 /// <param name="configuredMeasurements">The configured measurements.</param>
 /// <param name="opcRefreshRate">The OPC refresh rate in milliseconds.</param>
 protected OpcMonitor(Configuration configuration, ConfiguredMeasurements configuredMeasurements, int opcRefreshRate)
 {
     this.Configuration          = configuration;
     this.ConfiguredMeasurements = configuredMeasurements;
     this.OpcRefreshRate         = opcRefreshRate;
     this.CultureInfo            = new CultureInfo("en-US");
 }
Example #3
0
        /// <summary>
        /// Creates the configured measurements.
        /// </summary>
        public override void CreateConfiguredMeasurements()
        {
            // The configured measurements for SupplyCare Enterprise must be cloned from the official collection.
            // Only active measurements must be considered here.
            var configuredMeasurements = new ConfiguredMeasurements();

            configuredMeasurements.AddRange(from configuredMeasurement in this.ConfiguredMeasurements where configuredMeasurement.Active select new ConfiguredMeasurement(configuredMeasurement));

            // The member variable must contain only the supported measurements.
            this.ConfiguredMeasurements = configuredMeasurements;
        }
        /// <summary>
        /// Starts the monitor.
        /// </summary>
        /// <param name="configuration">The current configuration.</param>
        /// <param name="measurements">The measurements.</param>
        /// <param name="refreshRate">The requested OPC refresh rate, in milliseconds.</param>
        public override void Start(Configuration configuration, ConfiguredMeasurements measurements, int refreshRate)
        {
            // Check it again.
            if (!this.IsRunning)
            {
                Logger.Debug(this, "View Monitor Scheduler started");

                this.OpcMonitor = new ViewMonitor(configuration, measurements, refreshRate);
                this.OpcMonitor.Initialize();
                this.OpcMonitor.StartMonitor();
            }
        }
        /// <summary>
        /// Buttons the test start monitor request.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="RoutedEventArgs"/> instance containing the event data.</param>
        private void ButtonTestStartMonitorRequest(object sender, RoutedEventArgs e)
        {
            try
            {
                var client       = new CommServerClient();
                var measurements = new ConfiguredMeasurements();

                for (int i = 0; i < 5; i++)
                {
                    Random rnd          = new Random();
                    var    randomNumber = rnd.Next(100);
                    var    measurement  = new ConfiguredMeasurement(true);
                    measurement.DeviceId = new ConfiguredMeasurementItem(true)
                    {
                        Value = "DeviceId_" + randomNumber.ToString(CultureInfo.InvariantCulture), MappingType = MappingTypes.StaticType
                    };
                    measurement.SensorId = new ConfiguredMeasurementItem(true)
                    {
                        Value = "SensorId_" + randomNumber.ToString(CultureInfo.InvariantCulture), MappingType = MappingTypes.StaticType
                    };
                    measurement.Unit = new ConfiguredMeasurementItem(true)
                    {
                        Value = "m3", MappingType = MappingTypes.StaticType
                    };
                    measurement.DataType  = CommonFormatDataTypes.FloatType;
                    measurement.Timestamp = new ConfiguredMeasurementItem(true)
                    {
                        Value = "Some_Opc_ItemId", MappingType = MappingTypes.OpcTimestampType
                    };
                    measurement.Quality = new ConfiguredMeasurementItem(true)
                    {
                        Value = "Some_Opc_ItemId", MappingType = MappingTypes.OpcQualityType
                    };
                    measurement.Value = new ConfiguredMeasurementItem(true)
                    {
                        Value = "Some_Opc_ItemId", MappingType = MappingTypes.OpcValueType
                    };
                    measurement.Active = true;
                    measurements.Add(measurement);
                }

                client.StartMonitorRequest(ClientUri, Guid.NewGuid(), measurements);
                client.Close();
            }
            catch (Exception exception)
            {
                MessageBox.Show("Exception in client call: " + exception.Message);
            }
        }
Example #6
0
        /// <summary>
        /// Starts the monitor.
        /// </summary>
        /// <param name="configuration">The current configuration.</param>
        /// <param name="measurements">The measurements.</param>
        /// <param name="refreshRate">The requested OPC refresh rate, in milliseconds.</param>
        public override void Start(Configuration configuration, ConfiguredMeasurements measurements, int refreshRate)
        {
            // Check it again.
            if (!this.IsRunning)
            {
                Logger.Debug(this, "SupplyCare Monitor Scheduler started");

                // Do not accept meaningless refresh rate.
                if (refreshRate < MinimalRefreshRate)
                {
                    refreshRate = MinimalRefreshRate;
                }

                this.OpcMonitor = new SceMonitor(configuration, measurements, refreshRate);
                this.OpcMonitor.Initialize();
                this.OpcMonitor.StartMonitor();
            }
        }
        /// <summary>
        /// Creates the monitored item collection.
        /// </summary>
        /// <param name="configuredMeasurements">The configured measurements.</param>
        /// <param name="opcRefreshRate">The OPC refresh rate in milliseconds.</param>
        /// <returns>
        /// The collection of monitored items. <see cref="MonitoredItems"/>.
        /// </returns>
        public MonitoredItems Create(ConfiguredMeasurements configuredMeasurements, int opcRefreshRate)
        {
            var monitoredItems = new MonitoredItems(opcRefreshRate);

            // Loop on the configured measurements.
            for (var i = 0; i < configuredMeasurements.Count; i++)
            {
                var configuredMeasurement = configuredMeasurements[i];

                ProcessProperty(
                    configuredMeasurement.Quality, i, FieldTypes.Quality, monitoredItems);
                ProcessProperty(
                    configuredMeasurement.Timestamp, i, FieldTypes.Timestamp, monitoredItems);
                ProcessProperty(
                    configuredMeasurement.Unit, i, FieldTypes.Unit, monitoredItems);
                ProcessProperty(
                    configuredMeasurement.Value, i, FieldTypes.Value, monitoredItems);
            }

            return(monitoredItems);
        }
        /// <summary>
        /// Starts the monitor request.
        /// </summary>
        /// <param name="callbackEndpointAddress">The callback endpoint address.</param>
        /// <param name="invokeId">The invoke id.</param>
        /// <param name="configuredMeasurements">The configured measurements.</param>
        protected void StartMonitorRequest(string callbackEndpointAddress, Guid invokeId, ConfiguredMeasurements configuredMeasurements)
        {
            Logger.Debug(this, MethodBase.GetCurrentMethod().Name + " called");

            // Create message.
            var message = new Message(callbackEndpointAddress, invokeId, MessageTypes.StartMonitorRequest);

            message.AddParameter(ParameterTypes.ConfiguredMeasurements, configuredMeasurements);

            // Enqueue message.
            MessageQueue.Instance.Enqueue(message);
        }
 /// <summary>
 /// Starts the monitor request.
 /// </summary>
 /// <param name="callbackEndpointAddress">The callback endpoint address.</param>
 /// <param name="invokeId">The invoke id.</param>
 /// <param name="configuredMeasurements">The configured measurements.</param>
 void ICommServer.StartMonitorRequest(string callbackEndpointAddress, Guid invokeId, ConfiguredMeasurements configuredMeasurements)
 {
     this.StartMonitorRequest(callbackEndpointAddress, invokeId, configuredMeasurements);
 }
Example #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="SceMonitor"/> class.
 /// </summary>
 /// <param name="configuration">The current configuration.</param>
 /// <param name="configuredMeasurements">The configured measurements.</param>
 /// <param name="opcRefreshRate">The OPC refresh rate in milliseconds.</param>
 public SceMonitor(Configuration configuration, ConfiguredMeasurements configuredMeasurements, int opcRefreshRate)
     : base(configuration, configuredMeasurements, opcRefreshRate)
 {
 }
 /// <summary>
 /// Starts the monitor.
 /// </summary>
 /// <param name="configuration">The current configuration.</param>
 /// <param name="measurements">The measurements.</param>
 /// <param name="refreshRate">The requested OPC refresh rate, in milliseconds.</param>
 public abstract void Start(Configuration configuration, ConfiguredMeasurements measurements, int refreshRate);