示例#1
0
        /// <summary>
        /// Parses response from a current or sample request, updates changed data items and fires events
        /// </summary>
        /// <param name="response">IRestResponse from the MTConnect request</param>
        private void ParseStream(IRestResponse response)
        {
            using (StringReader sr = new StringReader(response.Content))
            {
                var xdoc = XDocument.Load(sr);

                _lastSequence = Convert.ToInt64(xdoc.Descendants().First(e => e.Name.LocalName == "Header")
                                                .Attribute("lastSequence").Value);

                var xmlDataItems = xdoc.Descendants()
                                   .Where(e => e.Attributes().Any(a => a.Name.LocalName == "dataItemId"));
                if (xmlDataItems.Any())
                {
                    var dataItems = xmlDataItems.Select(e => new {
                        id        = e.Attribute("dataItemId").Value,
                        timestamp = DateTime.Parse(e.Attribute("timestamp").Value, null,
                                                   System.Globalization.DateTimeStyles.RoundtripKind),
                        value = e.Value
                    })
                                    .OrderBy(i => i.timestamp)
                                    .ToList();

                    foreach (var item in dataItems)
                    {
                        var dataItem = _dataItemsDictionary[item.id];
                        var sample   = new DataItemSample(item.value.ToString(), item.timestamp);
                        dataItem.AddSample(sample);
                    }
                }
            }
        }
示例#2
0
 /// <summary>
 /// Adds a sample to the value buffer and removes the oldest value if the buffer is full
 /// </summary>
 /// <param name="newSample">The new sample to add</param>
 internal void AddSample(DataItemSample newSample)
 {
     dataItemSamples.Enqueue(newSample);
     while (dataItemSamples.Count > BufferSize)
     {
         dataItemSamples.Dequeue();
     }
     sampleAddedHandler();
 }
示例#3
0
 /// <summary>
 /// Adds a sample to the value buffer and removes the oldest value if the buffer is full
 /// </summary>
 /// <param name="newSample">The new sample to add</param>
 internal void AddSample(DataItemSample newSample)
 {
     dataItemSamples.Enqueue(newSample);
     while(dataItemSamples.Count > BufferSize)
     {
         dataItemSamples.Dequeue();
     }
     sampleAddedHandler();
 }
示例#4
0
 /// <summary>
 /// Adds a sample to the value buffer and removes the oldest value if the buffer is full
 /// </summary>
 /// <param name="newSample">The new sample to add</param>
 internal void AddSample(DataItemSample newSample)
 {
     _dataItemSamples.Add(newSample);
     _dataItemSamples.RemoveRange(0, Math.Max(0, _dataItemSamples.Count - BufferSize));
 }