public static void getRecordedValues(DateTime dt1, DateTime dt2, int maxPointsCount, SortedList<string, TagInfo> tagInfoArray, Report report) { /*dt1 = dt1.AddSeconds(-dt1.Second); dt2 = dt2.AddSeconds(-dt2.Second);*/ foreach (TagInfoPI ti in tagInfoArray.Values) { PISDK.PIValues vals=null; if (ti.TagMode == TagModeEnum.tag) { TagInfoTag tagInfo = ti as TagInfoTag; PISDK.PIPoint point = tagInfo.Point; PISDK.IPIData2 data = point.Data as PISDK.IPIData2; vals = data.RecordedValues(dt1.ToString(), dt2.ToString()); if (vals != null) { processVals(dt1, dt2, vals, ti, maxPointsCount, report,false); } } else { Tag tag=new Tag(ti, 0, dt1); report.addTag(tag); } } }
protected static void processVals(DateTime dt1, DateTime dt2, PIValues vals, TagInfo ti, int maxPointsCount, Report report,bool addMinutes=true) { if (vals.Count > maxPointsCount) { report.addTag(new Tag(ti, 0, dt1)); report.addTag(new Tag(ti, 0, dt2)); return; } Array vs; Array times; Array attrs; PISDK.IPIValues2 vals2=vals as PISDK.IPIValues2; vals2.GetValueArrays(out vs, out times, out attrs); for (int i=0; i < vs.Length; i++) { double time=(double)times.GetValue(i); PITimeServer.PITimeFormat tc=new PITimeServer.PITimeFormat(); tc.UTCSeconds = time; int add=addMinutes?ti.AddMinutes:0; DateTime dt=tc.LocalDate.AddMinutes(add); object v=vs.GetValue(i); double value=getDoubleVal(v); Tag tag = new Tag(ti, value, dt); report.addTag(tag); } }