Example #1
0
        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);
        }
Example #2
0
        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);
        }