2016-11-05 4 views
1

Ich arbeite mit einem DevExpress Line Chart und ich bin in ein kleines Problem geraten. Der Code unten ist Teil meiner persönlichen Pinger-Anwendung, ich ping viele Geräte als Teil meiner Arbeit Aufgaben zu testen, die Verbindung ist online und von angemessener Geschwindigkeit. Ich versuche, die Pings in einem Liniendiagramm zu visualisieren, aber jeder Wert, den ich dem Diagramm unter Verwendung des folgenden Codes hinzufüge, verbindet sich nicht mit dem anderen.Plotten Chart-Daten in Echtzeit Visual Basic

Wenn ich jedoch den kommentierten Code series1.Points.Add(New SeriesPoint(15, 50)) herausnehmen, verbinden alle Punkte/Datenpunkte mit dem auf dem Diagramm ... Also ich denke, es erkennt einfach nicht die anderen Werte zu verbinden, weil ich sie separat hinzufügen /Echtzeit.

Gibt es eine Möglichkeit, dem Diagramm zu sagen, dass es sich mit dem nächsten Argumentwert verbinden soll? Also Ping 1 Punkt verbindet sich mit Ping 2 Punkt mit einer Linie.

Do While PingCounter <= 10 
      'Increment Ping Counter 
      PingCounter = PingCounter + 1 

      'Ping and return values 
      Dim ping As Ping = New Ping() 
      Dim pingreply As PingReply = ping.Send(txtHost.Text) 
      ListBox1.Items.Add("Ping ID: " & PingCounter.ToString) 
      ListBox1.Items.Add("Address: " & pingreply.Address.ToString() & Constants.vbCr) 
      ListBox1.Items.Add("Roundtrip Time: " & pingreply.RoundtripTime & Constants.vbCr) 
      ListBox1.Items.Add("TTL (Time To Live): " & pingreply.Options.Ttl & Constants.vbCr) 
      ListBox1.Items.Add("Buffer Size: " & pingreply.Buffer.Length.ToString() & Constants.vbCr) 

      'Declare integer for ping time 
      Dim TripTime As Integer = pingreply.RoundtripTime 

      'Clear chart1 
      'Chart1.Series.Clear() 

      'Update chart with ping ID and Ping Time 
      Dim series1 As New DevExpress.XtraCharts.Series("Realtime Ping", ViewType.Line) 
      series1.Points.Add(New SeriesPoint(PingCounter, TripTime)) 
      'series1.Points.Add(New SeriesPoint(15, 50)) 

      Chart1.CrosshairOptions.HighlightPoints = True 
      Chart1.CrosshairOptions.ShowValueLine = True 
      CType(series1.View, LineSeriesView).LineStyle.DashStyle = DashStyle.Solid 

      ' Add the series to the chart. 
      Chart1.Series.Add(series1) 
      My.Application.DoEvents() 
     Loop 

Dies ist nur prototyle/Proof of Concept-Code und wird natürlich deutlich mit einem Hintergrund Arbeiter in Ordnung gebracht werden.

Antwort

1

Sie fügen jeden Punkt als eine andere Reihe zum Diagramm hinzu. Deklariere und füge eine einzelne Serie außerhalb der Schleife hinzu und füge einfach Punkte hinzu.

Dim series1 As New DevExpress.XtraCharts.Series("Realtime Ping", ViewType.Line) 
Chart1.Series.Add(series1) 
CType(series1.View, LineSeriesView).LineStyle.DashStyle = DashStyle.Solid 
Chart1.CrosshairOptions.HighlightPoints = True 
Chart1.CrosshairOptions.ShowValueLine = True 
Do While PingCounter <= 10 
    'Increment Ping Counter 
    PingCounter = PingCounter + 1 

    'Ping and return values 
    Dim ping As Ping = New Ping() 
    Dim pingreply As PingReply = ping.Send(txtHost.Text) 
    ListBox1.Items.Add("Ping ID: " & PingCounter.ToString) 
    ListBox1.Items.Add("Address: " & pingreply.Address.ToString() & Constants.vbCr) 
    ListBox1.Items.Add("Roundtrip Time: " & pingreply.RoundtripTime & Constants.vbCr) 
    ListBox1.Items.Add("TTL (Time To Live): " & pingreply.Options.Ttl & Constants.vbCr) 
    ListBox1.Items.Add("Buffer Size: " & pingreply.Buffer.Length.ToString() & Constants.vbCr) 

    'Declare integer for ping time 
    Dim TripTime As Integer = pingreply.RoundtripTime 


    'Update chart with ping ID and Ping Time 

    series1.Points.Add(New SeriesPoint(PingCounter, TripTime)) 

    My.Application.DoEvents() 
Loop 

Alle Punkte in einer Serie sind verbunden. Mehrere Reihen werden verwendet, wenn Sie beispielsweise zusätzliche Daten in einer anderen Farbe im selben Diagramm darstellen möchten. Wenn Sie also in Ihrem Code die von Ihnen erwähnte Zeile auskommentiert haben, enthält jede Serie zwei Punkte (einen Punkt mit immer demselben Wert), die verbunden sind. Was Sie wollen, sind alle Punkte in einer einzigen Serie.

+0

Vielen Dank Jens! Ich schätze Ihre Hilfe sehr. – user3516240