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