2016-11-05 56 views
1

私はDevExpress Line Chartで作業していますが、小さな問題が発生しました。以下のコードは、私の個人的なピンガーアプリケーションの一部です。接続をテストする作業の一環として、多くのデバイスにpingを実行して、オンラインで合理的な速度を出しています。 pingを折れ線グラフで視覚化しようとしていますが、下のコードを使用してグラフに追加する各値は、他の値と接続しません。リアルタイムVisual Basicでグラフデータをプロットする

series1.Points.Add(New SeriesPoint(15, 50))すべてのドット/データポイントはチャート上のそれまで接続しています...だから私はそれらを別々に追加しているので他の値を認識できないと思う/リアルタイム。

最も近い引数値に接続するようにグラフに指示する方法はありますか?したがって、Ping 1ポイントはPing 2ポイントに1行で接続します。

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 

これはプロトタイプ/概念証明コードであり、明らかにバックグラウンドワーカーで大幅に整理されます。

答えて

1

各点を別の系列としてグラフに追加しています。ループの外側に単一の系列を宣言して追加し、ポイントを追加するだけです。

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 

1つのシリーズのすべてのポイントが接続されています。たとえば、複数の系列が、同じグラフの別の色で追加データをプロットする場合に使用されます。したがって、あなたのコードで、あなたが言及した行のコメントを外した場合、各シリーズには2つの点(常に同じ値の1点)が含まれています。あなたが望むのは、1つのシリーズのすべてのポイントです。

+0

ありがとう、ジェンス!私はあなたの助けに大変感謝しています。 – user3516240