Hallo zusammen,
ich habe wohl ein kleines Problem und hoffe ihr könnt mir Helfen.
Über die Serielle-Schnittstelle bekomme ich Daten "String" rein diese möchte ich
visuell in Form einer Sinuskurve/Oszilloskop da stellen.
Das empfangen und zerlegen der Daten funktioniert super, und Zeichnen kann ich die Daten auch ein mal aber danach hängt es bei mir.
in einem PointF-Array stehen 64 Werte die eine Amplitude darstellen.
Jetzt würde ich halt gerne haben das meine Amplitude nach Links läuft sprich alte Werte entfernt werden und neue Angehängt werden....
Hat da jemand eine eine Idee/Infos wie ich das machen könnte?
Vielleicht gehe ich das ja auch total Falsch an.
Anbei der Code mit dem ich den die ersten Werte einmal Zeichen.
[highlight=vbnet]
Private Sub DrawMyGraph()
Dim x0 As Integer = 50
Dim Y0 As Integer = (PictureBox1.Height / 2)
Dim Scale_y As Integer = (PictureBox1.Height / 2) - 15
Dim SCale_X_Faktor As Integer = PictureBox1.Width
Dim points As PointF() = New PointF(63) {}
TextBox1.AppendText(vbCrLf & vbCrLf)
For j As Integer = 0 To 64
points(j) = New PointF()
points(j).X = x0 + j
points(j).Y = Y0 + (sin_data(j) / 10)
TextBox1.AppendText(CStr(points(j).Y) & vbCrLf)
Next
Sin_graph = PictureBox1.CreateGraphics()
Sin_graph.Clear(Color.White)
Using p As New Pen(Color.Black)
p.EndCap = LineCap.ArrowAnchor
'Draw X-Achse
Sin_graph.DrawLine(p, x0, Y0, x0 + 400 * SCale_X_Faktor, Y0)
'X-Achse Abschnitte 0 - 2PI
Sin_graph.DrawLine(p, x0 + 25, Y0, x0 + 25, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 50, Y0, x0 + 50, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 75, Y0, x0 + 75, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 100, Y0, x0 + 100, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 125, Y0, x0 + 125, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 150, Y0, x0 + 150, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 175, Y0, x0 + 175, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 200, Y0, x0 + 200, Y0 + 10)
'Draw Y-Achse
pn.StartCap = LineCap.ArrowAnchor
Sin_graph.DrawLine(p, x0, Y0 + Scale_y, x0, Y0 - Scale_y)
End Using
pn.DashStyle = DashStyle.Dash
pn.Color = Color.Red
pn.StartCap = LineCap.NoAnchor
Sin_graph.DrawString("X-Achse", SystemFonts.DefaultFont, Brushes.Blue, x0, Y0)
Sin_graph.SmoothingMode = SmoothingMode.AntiAlias
'Zeichnen des Graphen
Sin_graph.DrawLines(Pens.Red, points)
End sub
[/highlight]
ich habe wohl ein kleines Problem und hoffe ihr könnt mir Helfen.
Über die Serielle-Schnittstelle bekomme ich Daten "String" rein diese möchte ich
visuell in Form einer Sinuskurve/Oszilloskop da stellen.
Das empfangen und zerlegen der Daten funktioniert super, und Zeichnen kann ich die Daten auch ein mal aber danach hängt es bei mir.
in einem PointF-Array stehen 64 Werte die eine Amplitude darstellen.
Jetzt würde ich halt gerne haben das meine Amplitude nach Links läuft sprich alte Werte entfernt werden und neue Angehängt werden....
Hat da jemand eine eine Idee/Infos wie ich das machen könnte?
Vielleicht gehe ich das ja auch total Falsch an.
Anbei der Code mit dem ich den die ersten Werte einmal Zeichen.
[highlight=vbnet]
Private Sub DrawMyGraph()
Dim x0 As Integer = 50
Dim Y0 As Integer = (PictureBox1.Height / 2)
Dim Scale_y As Integer = (PictureBox1.Height / 2) - 15
Dim SCale_X_Faktor As Integer = PictureBox1.Width
Dim points As PointF() = New PointF(63) {}
TextBox1.AppendText(vbCrLf & vbCrLf)
For j As Integer = 0 To 64
points(j) = New PointF()
points(j).X = x0 + j
points(j).Y = Y0 + (sin_data(j) / 10)
TextBox1.AppendText(CStr(points(j).Y) & vbCrLf)
Next
Sin_graph = PictureBox1.CreateGraphics()
Sin_graph.Clear(Color.White)
Using p As New Pen(Color.Black)
p.EndCap = LineCap.ArrowAnchor
'Draw X-Achse
Sin_graph.DrawLine(p, x0, Y0, x0 + 400 * SCale_X_Faktor, Y0)
'X-Achse Abschnitte 0 - 2PI
Sin_graph.DrawLine(p, x0 + 25, Y0, x0 + 25, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 50, Y0, x0 + 50, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 75, Y0, x0 + 75, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 100, Y0, x0 + 100, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 125, Y0, x0 + 125, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 150, Y0, x0 + 150, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 175, Y0, x0 + 175, Y0 + 10)
Sin_graph.DrawLine(p, x0 + 200, Y0, x0 + 200, Y0 + 10)
'Draw Y-Achse
pn.StartCap = LineCap.ArrowAnchor
Sin_graph.DrawLine(p, x0, Y0 + Scale_y, x0, Y0 - Scale_y)
End Using
pn.DashStyle = DashStyle.Dash
pn.Color = Color.Red
pn.StartCap = LineCap.NoAnchor
Sin_graph.DrawString("X-Achse", SystemFonts.DefaultFont, Brushes.Blue, x0, Y0)
Sin_graph.SmoothingMode = SmoothingMode.AntiAlias
'Zeichnen des Graphen
Sin_graph.DrawLines(Pens.Red, points)
End sub
[/highlight]
Comment