private void dataReturned(object sender, EventArgs e) { MonitoredItem monitoredItem = (MonitoredItem)sender; foreach (var value in monitoredItem.DequeueValues()) { string message = string.Format("{0}={1}\t[Source Time: {2}, Status: {3}]", monitoredItem.DisplayName, value.Value, value.SourceTimestamp.ToString("yyyy-MM-dd HH:mm:ss.fff"), value.StatusCode); log.Info(message); tagDB.UpdateTagValue(monitoredItem.DisplayName, value.Value.ToString()); if (monitoredItem.DisplayName.EndsWith("Trigger")) // == "Camera01Trigger") { if ((bool)value.Value == true) { // Reset trigger opcuaClient.WriteValueToPath(string.Format("{0}/{1}", TagPath, monitoredItem.DisplayName), false); string tagRoot = monitoredItem.DisplayName.Substring(0, monitoredItem.DisplayName.Length - "Trigger".Length); string CameraUriTag = tagRoot + "CameraURI"; // If the tag exists and has a valid value, attempt a callup if (tagDB.Tags.Exists(x => x.name == CameraUriTag)) { var tagValue = tagDB.Tags.Find(item => item.name == CameraUriTag).value; if (tagValue != null && tagValue != "") { int viewerNum = int.Parse(tagRoot.Substring(tagRoot.Length - 2, 2)) - 1; callupDelegate(new Uri(tagValue), viewerNum); } } else { // Tag not yet assigned log.Warn(string.Format("Tag not found [{0}]. Callup cannot be performed.", CameraUriTag)); } } } else if (monitoredItem.DisplayName.EndsWith("CameraURI")) { string tagRoot = monitoredItem.DisplayName.Substring(0, monitoredItem.DisplayName.Length - "CameraURI".Length); // If the tag exists and has a valid value, attempt a callup if (tagDB.Tags.Exists(x => x.name == monitoredItem.DisplayName)) { var tagValue = tagDB.Tags.Find(item => item.name == monitoredItem.DisplayName).value; if (tagValue != null && tagValue != "") { int viewerNum = int.Parse(tagRoot.Substring(tagRoot.Length - 2, 2)) - 1; callupDelegate(new Uri(tagValue), viewerNum); } } else { // Tag not yet assigned log.Warn(string.Format("Tag not found [{0}]. Callup cannot be performed.", monitoredItem.DisplayName)); } } } }