在实时 Visual Basic 中绘制图表数据
Plotting Chart Data in Realtime Visual Basic
我正在处理一个 DevExpress Line Chart
,我 运行 遇到了一个小问题。下面的代码是我个人 pinger 应用程序的一部分,作为我工作职责的一部分,我 ping 了很多设备,以测试连接是否在线并且速度是否合理。我试图让 ping 在折线图上可视化,但我使用下面的代码添加到图表中的每个值都没有相互连接。
但是,如果我取出注释代码 series1.Points.Add(New SeriesPoint(15, 50))
所有 dots/data 点都连接到图表上的那个点......所以我认为它只是没有识别其他值连接到因为我要添加它们 separately/real-time。
有没有办法让图表连接到它最近的参数值?所以 Ping 1 点用一条线连接到 Ping 2 点。
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
这只是 prototyle/proof 的概念代码,显然需要后台工作人员进行大量整理。
您正在将每个点作为不同的系列添加到图表中。在循环外声明并添加一个系列,然后向其添加点。
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
一个系列中的所有点都已连接。例如,如果您想要在同一图表中以不同颜色绘制其他数据,则可以使用多个系列。因此,如果在您的代码中取消注释您提到的行,则每个系列包含两个连接的点(一个点始终具有相同的值)。你想要的是一个系列中的所有点。
我正在处理一个 DevExpress Line Chart
,我 运行 遇到了一个小问题。下面的代码是我个人 pinger 应用程序的一部分,作为我工作职责的一部分,我 ping 了很多设备,以测试连接是否在线并且速度是否合理。我试图让 ping 在折线图上可视化,但我使用下面的代码添加到图表中的每个值都没有相互连接。
但是,如果我取出注释代码 series1.Points.Add(New SeriesPoint(15, 50))
所有 dots/data 点都连接到图表上的那个点......所以我认为它只是没有识别其他值连接到因为我要添加它们 separately/real-time。
有没有办法让图表连接到它最近的参数值?所以 Ping 1 点用一条线连接到 Ping 2 点。
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
这只是 prototyle/proof 的概念代码,显然需要后台工作人员进行大量整理。
您正在将每个点作为不同的系列添加到图表中。在循环外声明并添加一个系列,然后向其添加点。
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
一个系列中的所有点都已连接。例如,如果您想要在同一图表中以不同颜色绘制其他数据,则可以使用多个系列。因此,如果在您的代码中取消注释您提到的行,则每个系列包含两个连接的点(一个点始终具有相同的值)。你想要的是一个系列中的所有点。