Динамическое отображение данных LineGraph не обновляется

Я пытаюсь использовать Dynamic Data Display для моего старшего дизайн-проекта, но у меня возникают трудности.

Я могу создать график просто отлично, но я не могу обновить строку вообще, если не увеличиваю и уменьшаю масштаб.

В большинстве примеров все, что им нужно было сделать, это создать график, затем, когда они манипулируют данными, график обновляется сам.

Итак, вот основные функции, которые я использую в отношении графиков:

    private List<WindDAQ.WindDataPoint> Chart1Data;
    private EnumerableDataSource<WindDAQ.WindDataPoint> Chart1DataSource;

    private void InitializeCharts()
    {
        Chart1Data = new List<WindDAQ.WindDataPoint>();
        Chart1DataSource = new EnumerableDataSource<WindDAQ.WindDataPoint>(Chart1Data);
        Chart1DataSource.SetXMapping(x => Chart1XAxis.ConvertToDouble(x.Time));
        Chart1DataSource.SetYMapping(y => Chart1XAxis.ConvertToDouble(y.Lift));
        Chart1.AddLineGraph(Chart1DataSource, Colors.Blue, 2, "Lift");
        Chart1.Viewport.AutoFitToView = true;
    }




    private void UpdateChart()
    {
        for (int i = 0, count = itsDAQ.getStreamCount(); i < count; i++)
        {
            Chart1Data.Add(itsDAQ.getValue());
            if(Chart1Data.Count >= 300)
            { Chart1Data.RemoveAt(0); }
        }
    }
  • InitializeCharts () вызывается один раз при создании окна.

  • UpdateChart () вызывается для события таймера.

  • WindDAQ.WindDataPoint содержит данные Lift, Drag, Velocity и Time. Лифт и Время показаны выбранными.

1 ответ

Вы должны использовать метод AppendAsync вашей observableCollection. Вы обновляете только список, использованный для создания наблюдаемого, а не источник вашего графика.

private void UpdateChart()
{
    for (int i = 0, count = itsDAQ.getStreamCount(); i < count; i++)
    {
        Chart1DataSource.AppendAsync(itsDAQ.getValue());

        if (Chart1DataSource.Collection.Count >= 300) // this part should work in a thread-safe
        { 
           Chart1DataSource.Collection.RemoveAt(0); // context and with some precaution 
        }
    }
}
Другие вопросы по тегам