示例#1
0
        public TimeSeries[] GetSampleData()
        {
            // This function gets sampled values for a list of tags
            // from the same PI server over the same time range at the
            // interval specified.
            try
            {
                if (mintValCnt == 0)
                    mintValCnt = Int32.MaxValue;
                String[] tags = GetTags();

                PIArcDataRequest[] padReqs = new PIArcDataRequest[tags.Length];

                // Adjust start and end times to account for time zone
                CheckDates();  // insure that start is before end
                TimeRange tr = new TimeRange();
                tr.Start = mdtStart.ToString("yyyy-MM-ddTHH:mm:ss-08:00");
                tr.End = mdtEnd.ToString("yyyy-MM-ddTHH:mm:ss-08:00");

                PIArcManner paManr = new PIArcManner();
                paManr.RetrievalType = PIArcMannerRetrievalType.Interpolated;
                paManr.Boundaries = PIArcMannerBoundaries.Interpolated;
                // Calculate the number of intervals based on the interval and time span
                TimeSpan span = mdtEnd.Subtract(mdtStart);
                mintValCnt = (int)(span.TotalSeconds / Convert.ToDouble(mintInterval)) + 1;
                paManr.NumValues = mintValCnt;

                for (int i = 0; i < tags.Length; i++)
                {
                    PIArcDataRequest padReq = new PIArcDataRequest();
                    padReq.Path = tags[i];
                    padReq.PIArcManner = paManr;
                    padReq.TimeRange = tr;

                    padReqs[i] = padReq;
                }

                TimeSeries[] ts = client.GetPIArchiveData(padReqs);

                // Always close the client.
                client.Close();

                WriteOutput();
                return (CheckResult(ts));
            }
            catch (Exception ex)
            {
                output.AppendLine(ex.Message);
                if (ex.InnerException != null)
                {
                    output.AppendLine(ex.InnerException.Message);
                }
                WriteOutput();
                return null;
            }
        }
示例#2
0
 public TimeSeries[] GetPIArchiveData(PIArcDataRequest[] requests)
 {
     throw new NotImplementedException();
 }
示例#3
0
 public System.Threading.Tasks.Task<TimeSeries[]> GetPIArchiveDataAsync(PIArcDataRequest[] requests)
 {
     throw new NotImplementedException();
 }
示例#4
0
        public TimeSeries[] GetArchiveData()
        {
            // This function gets compressed archive data for a list of tags
            // from the same PI server over the same time range.
            try
            {
                if (mintValCnt == 0)
                    mintValCnt = Int32.MaxValue;
                String[] tags = GetTags();

                PIArcDataRequest[] padReqs = new PIArcDataRequest[tags.Length];

                // Adjust start and end times to account for time zone
                CheckDates();  // insure that start is before end
                TimeRange tr = new TimeRange();
                tr.Start = mdtStart.ToString("yyyy-MM-ddTHH:mm:ss-08:00");
                tr.End = mdtEnd.ToString("yyyy-MM-ddTHH:mm:ss-08:00");

                PIArcManner paManr = new PIArcManner();
                paManr.RetrievalType = PIArcMannerRetrievalType.Compressed;
                paManr.Boundaries = PIArcMannerBoundaries.Inside;
                paManr.NumValues = mintValCnt;

                for (int i = 0; i < tags.Length; i++)
                {
                    PIArcDataRequest padReq = new PIArcDataRequest();
                    padReq.Path = tags[i];
                    padReq.PIArcManner = paManr;
                    padReq.TimeRange = tr;

                    padReqs[i] = padReq;
                }

                TimeSeries[] ts = client.GetPIArchiveData(padReqs);

                // Always close the client.
                client.Close();

                WriteOutput();
                return (CheckResult(ts));
            }
            catch (Exception ex)
            {
                output.AppendLine(ex.Message);
                if (ex.InnerException != null)
                {
                    output.AppendLine(ex.InnerException.Message);
                }
                WriteOutput();
                return null;
            }
        }