Ejemplo n.º 1
0
 public AFListResults <PIPoint, AFDataPipeEvent> AddSignupsWithInitEvents(IList <PIPoint> piPoints)
 {
     if (_PIPipe != null)
     {
         return(_PIPipe.AddSignupsWithInitEvents(piPoints));
     }
     else
     {
         throw new NullReferenceException("The PIDataPipe cannot be null");
     }
 }
Ejemplo n.º 2
0
        private void SubscribeToPointUpdates(MeasurementKey[] keys)
        {
            OnStatusMessage(MessageLevel.Info, $"Subscribing to updates for {keys.Length} measurements...");

            var query = from row in DataSource.Tables["ActiveMeasurements"].AsEnumerable()
                        from key in keys
                        where row["ID"].ToString() == key.ToString()
                        select new
            {
                Key          = key,
                AlternateTag = row["AlternateTag"].ToString(),
                PointTag     = row["PointTag"].ToString()
            };

            List <PIPoint> dataPoints = new List <PIPoint>();

            foreach (var row in query)
            {
                string tagName = row.PointTag;

                if (!string.IsNullOrWhiteSpace(row.AlternateTag))
                {
                    tagName = row.AlternateTag;
                }

                OnStatusMessage(MessageLevel.Debug, $"DEBUG: Looking up point tag '{tagName}'...");

                PIPoint point = GetPIPoint(m_connection.Server, tagName);

                if ((object)point != null)
                {
                    OnStatusMessage(MessageLevel.Debug, $"DEBUG: Found point tag '{tagName}'...");
                    dataPoints.Add(point);
                    m_tagKeyMap[point.ID] = row.Key;
                }
                else
                {
                    OnStatusMessage(MessageLevel.Debug, $"DEBUG: Failed to find point tag '{tagName}'...");
                }
            }

            // Remove sign-ups for any existing point list
            if ((object)m_dataPoints != null)
            {
                m_dataPipe.RemoveSignups(m_dataPoints);
            }

            // Sign up for updates on selected points
            AFListResults <PIPoint, AFDataPipeEvent> initialEvents = m_dataPipe.AddSignupsWithInitEvents(dataPoints);

            OnStatusMessage(MessageLevel.Debug, $"DEBUG: Initial event count = {initialEvents.Results.Count}...");

            foreach (AFDataPipeEvent item in initialEvents.Results)
            {
                OnStatusMessage(MessageLevel.Debug, "DEBUG: Found initial event for action...");

                if (item.Action != AFDataPipeAction.Delete)
                {
                    m_dataUpdateObserver_DataUpdated(this, new EventArgs <AFValue>(item.Value));
                }
            }

            m_dataPoints = dataPoints;

            m_eventTimer.Enabled = true;
        }