private bool ValidateOutputFormat() { bool valid = false; try { object[] args = new object[OutputPlainTextDataFormat.Text.Split('{').Where(value => !string.IsNullOrWhiteSpace(value)).Select(value => int.Parse(value.Split(':')[0])).Max() + 1]; ArchiveDataPoint sample = new ArchiveDataPoint(1); for (int i = 0; i < args.Length; i++) { args[i] = sample; } Encoding.ASCII.GetBytes(string.Format(OutputPlainTextDataFormat.Text, args)); valid = true; } catch (Exception ex) { StringBuilder sb = new StringBuilder(); sb.AppendLine("Invalid Data Output Format: "); sb.AppendLine(ex.Message); sb.AppendLine(); sb.AppendLine("A valid format, for example, is:"); sb.AppendLine("{0:Source}:{1:ID},{2:Name},{3:Synonym1},{4:Time},{5:UnixTime},{6:Value},{7:Quality},{8:Description}"); MessageBox.Show(sb.ToString(), "Invalid Output Data Format", MessageBoxButtons.OK); OutputPlainTextDataFormat.Focus(); } return(valid); }
private IEnumerable <IDataPoint> ReadDataStream(TreeStream <HistorianKey, HistorianValue> stream) { HistorianKey key = new HistorianKey(); HistorianValue value = new HistorianValue(); List <ArchiveDataPoint> queriedData = new List <ArchiveDataPoint>(); ArchiveDataPoint point; MeasurementStateFlags stateFlags; while (stream.Read(key, value)) { point = new ArchiveDataPoint((int)key.PointID); point.Time = new TimeTag(new DateTime((long)key.Timestamp)); point.Value = BitConvert.ToSingle(value.Value1); stateFlags = (MeasurementStateFlags)value.Value3; if ((stateFlags & MeasurementStateFlags.BadData) == 0) { if ((stateFlags & MeasurementStateFlags.BadTime) == 0) { point.Quality = Quality.Good; } else { point.Quality = Quality.Old; } } else { point.Quality = Quality.SuspectData; } queriedData.Add(point); } return(queriedData); }