Member 13308214 Ответов: 2

Эй я пытаюсь отладить этот код на visual basic.net есть идеи?


Это ЭКГ-программа vbgeneral">ЭКГ-программа[^]

код, который я пытаюсь отладить:

Imports System.Windows.Forms.DataVisualization.Charting
Imports System.Threading

Public Class StreamChart
    Private addDataRunner As Thread
    Private rand As New Random()
    Public Delegate Sub AddDataDelegate()
    Public addDataDel As AddDataDelegate

    Private Sub Form3_Load(sender As Object, e As System.EventArgs) Handles MyBase.Load
        Dim addDataThreadStart As New ThreadStart(AddressOf AddDataThreadLoop)
        addDataRunner = New Thread(addDataThreadStart)
        addDataDel = New AddDataDelegate(AddressOf AddData)

        Chart1.BackColor = Color.FromArgb(211, 223, 240)
        Chart1.BackGradientStyle = System.Windows.Forms.DataVisualization.Charting.GradientStyle.TopBottom
        Chart1.BackSecondaryColor = System.Drawing.Color.White
        Chart1.BorderlineColor = Color.FromArgb(26, 59, 105)  'System.Drawing.Color.FromArgb(((int)(((byte)(26)))), ((int)(((byte)(59)))), ((int)(((byte)(105)))));
        Chart1.BorderlineDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.Solid
        Chart1.BorderlineWidth = 2
        Chart1.BorderSkin.SkinStyle = System.Windows.Forms.DataVisualization.Charting.BorderSkinStyle.Emboss

        With Chart1.ChartAreas(0)
            .AxisX.LabelStyle.Font = New System.Drawing.Font("Trebuchet MS", 8.25F, System.Drawing.FontStyle.Bold)
            .AxisX.LabelStyle.Format = "hh:mm:ss"
            .AxisX.LabelStyle.Interval = 10
            .AxisX.LabelStyle.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Seconds
            .AxisX.LineColor = Color.LightGray
            .AxisX.Title = "Time"
            .AxisX.MajorGrid.LineColor = Color.LightBlue
            .AxisX.MajorGrid.Interval = 10
            .AxisX.MajorGrid.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Seconds
            .AxisX.MajorTickMark.Interval = 10
            .AxisX.MajorTickMark.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Seconds

            .AxisY.Title = "Velocity"
            .AxisY.IsLabelAutoFit = False
            .AxisY.IsStartedFromZero = False
            .AxisY.LabelStyle.Font = New System.Drawing.Font("Trebuchet MS", 8.25F, System.Drawing.FontStyle.Bold)
            .AxisY.LineColor = Color.LightGray
            .AxisY.MajorGrid.LineColor = Color.LightGray
            .AxisY.Maximum = 25
            .AxisY.Minimum = 0

            .BackColor = Color.FromArgb(64, 165, 191, 228)
            .BackGradientStyle = System.Windows.Forms.DataVisualization.Charting.GradientStyle.TopBottom
            .BackSecondaryColor = System.Drawing.Color.White
            .BorderColor = Color.FromArgb(64, 165, 191, 228)
            .BorderDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.Solid

            .InnerPlotPosition.Auto = False
            .InnerPlotPosition.Height = 80
            .InnerPlotPosition.Width = 90
            .InnerPlotPosition.X = 9
            .InnerPlotPosition.Y = 4

            .Position.Auto = False
            .Position.Height = 86
            .Position.Width = 88
            .Position.X = 6
            .Position.Y = 6

        End With

        Chart1.Legends(0).BackColor = System.Drawing.Color.Transparent

    End Sub

    Private Sub startTrending_Click(sender As Object, e As System.EventArgs) Handles startTrending.Click
        startTrending.Enabled = False
        stopTrending.Enabled = True

        Dim minValue = New Date(100)
        minValue = DateTime.Now
        Dim maxValue As New Date(100)
        maxValue = minValue.AddSeconds(100)

        Chart1.ChartAreas(0).AxisX.Minimum = minValue.ToOADate()
        Chart1.ChartAreas(0).AxisX.Maximum = maxValue.ToOADate()
        Chart1.Series.Clear()
        Chart1.Series.Add("Streaming Data")
        With Chart1.Series(0)
            'Chart1.Series(0).IsVisibleInLegend = False
            .ChartType = SeriesChartType.Line
            .BorderWidth = 2
            .Color = Color.OrangeRed
            .BorderColor = Color.FromArgb(224, 64, 10)
            .ShadowOffset = 1
        End With


        ' start worker threads.
        If addDataRunner.IsAlive = True Then
            addDataRunner.Resume()
        Else
            addDataRunner.Start()
        End If

    End Sub 'startTrending_Click 

    Private Sub stopTrending_Click(sender As Object, e As System.EventArgs) Handles stopTrending.Click
        If addDataRunner.IsAlive = True Then
            addDataRunner.Suspend()
        End If

        startTrending.Enabled = True
        stopTrending.Enabled = False

    End Sub
    Private Sub AddDataThreadLoop()
        While True
            chart1.Invoke(addDataDel)

            Thread.Sleep(200)
        End While
    End Sub

    Public Sub AddData()
        Dim timeStamp As DateTime = DateTime.Now

        Dim ptSeries As Series
        For Each ptSeries In chart1.Series
            AddNewPoint(timeStamp, ptSeries)
        Next ptSeries
    End Sub
    Public Sub AddNewPoint(timeStamp As DateTime, ptSeries As System.Windows.Forms.DataVisualization.Charting.Series)
        Dim newVal As Double = 0

        If ptSeries.Points.Count > 0 Then
            newVal = ptSeries.Points((ptSeries.Points.Count - 1)).YValues(0) + (rand.NextDouble() * 2 - 1)
        End If

        If newVal < 0 Then
            newVal = 0
        End If
        ' Add new data point to its series.
        ptSeries.Points.AddXY(timeStamp.ToOADate(), rand.Next(10, 20))

        ' remove all points from the source series older than 1.5 minutes.
        Dim removeBefore As Double = timeStamp.AddSeconds((CDbl(10) * -1)).ToOADate()
        'remove oldest values to maintain a constant number of data points
        While ptSeries.Points(0).XValue < removeBefore
            ptSeries.Points.RemoveAt(0)
        End While

        chart1.ChartAreas(0).AxisX.Minimum = ptSeries.Points(0).XValue
        Chart1.ChartAreas(0).AxisX.Maximum = DateTime.FromOADate(ptSeries.Points(0).XValue).AddMinutes(0.3).ToOADate()

        chart1.Invalidate()
    End Sub
End Class


Что я уже пробовал:

я пытался запустить его на своей visual studio 2017 и не понимал, как его отлаживать.
пожалуйста помочь. спасибо.

2 Ответов

Рейтинг:
2

Member 13308214

Спасибо, я уже отладил код самостоятельно.


Рейтинг:
1

Richard MacCutchan

Откройте исходный код в Редакторе (Просмотр кода). Щелкните мышью по серой рамке слева от окна, рядом со строкой кода, и появится красный диск. Нажмите клавишу F5 на клавиатуре, и отладчик начнет выполнять код и остановится на Красном диске - строке "точка останова". Оттуда вы можете один шаг через код, проверять и изменять переменные и т. д.

[редактировать]
Смотреть также Отладка в Visual Studio[^].
[/редактировать]