2016-04-03 17 views
0

Ich möchte ein Echtzeit-Daten-Diagramm, das die letzten 10 Minuten in asp.net oder WinForms zeigt..NET Real Time Data Chart

This is the image that i want to make it

ich die Serie aufgenommen, konnte aber nicht Datenpunkte hinzufügen. Ich habe viel gesucht, aber ich habe versagt.

Ich benutze Infragistics übrigens.

Der folgende Code generiert Zufallszahlen und zeigt diese Zahl in den Diagrammen an. Es funktioniert aber nur letzte Nummer, die i can see it. nicht 10 Minuten dauern.

private void Form1_Load(object sender, EventArgs e) 
    { 
     Timer timer = new Timer(); 
     timer.Interval = (1 * 1000); // 1 secs 
     timer.Tick += new EventHandler(timer_Tick); 
     timer.Start(); 
    } 

    private void timer_Tick(object sender, EventArgs e) 
    { 
     Random r = new Random(); 
     int rnd=r.Next(1, 150); 
     DataTable dt = new DataTable(); 

     dt.Columns.Add("Value", typeof(int)); 
     dt.Columns.Add("Date", typeof(DateTime)); 
     dt.Rows.Add(rnd, DateTime.ParseExact(DateTime.Now.ToLongTimeString(), "HH:mm:ss", null)); 

     NumericTimeSeries series = new NumericTimeSeries();  
     series.DataBind(dt, "Date", "Value"); 
     NumericTimeDataPoint ndp1 = new NumericTimeDataPoint(DateTime.Now, rnd, "ilk", false); 
     NumericTimeDataPoint ndp2 = new NumericTimeDataPoint(DateTime.Now, 5.0, "iki", false); 
     series.Points.Add(ndp1); 
     series.Points.Add(ndp2); 
     ultraChart2.Data.SwapRowsAndColumns = true; 
     ultraChart2.DataSource = dt; 
    } 

Antwort

1

Wenn ich Ihr Problem zu verstehen, richtig

Auf jedem Tick, sind Sie ersetzen Ihre Daten statt, um es hinzuzufügen.

Versuchen Sie, die Serie einmal im Form1_Load Handler zu initialisieren, und fügen Sie bei jedem Tick einfach neue Werte hinzu, ohne eine neue DataTable zu erstellen, an die Serie zu binden und so weiter.


Um die Dinge klar zu machen,

Ihre timer_Tick Handler nur 4 Zeilen Code haben sollte:

private void timer_Tick(object sender, EventArgs e) 
{ 
    NumericTimeDataPoint ndp1 = new NumericTimeDataPoint(DateTime.Now, rnd, "ilk", false); 
    NumericTimeDataPoint ndp2 = new NumericTimeDataPoint(DateTime.Now, 5.0, "iki", false); 
    _series.Points.Add(ndp1); 
    _series.Points.Add(ndp2); 
} 

Deklarieren Sie die _series als privates Mitglied initialisieren es aus dem Form1_Load Handler, und Sie sollten gut gehen.

+0

Ich habe einige Änderungen vorgenommen, aber es wirft Fehler. Würdest du den Pastebin bearbeiten, wäre das super für mich. http://pastebin.com/vqDsNUv1 –

+0

Ich rate, und sagen, dass das Problem ist, dass Sie _NumericTimeSeries _series = new NumericTimeSeries(); _ innerhalb der Load-Handler deklarieren. Setzen Sie es als privates Mitglied nach draußen. –