Servus,
eins vorweg, ich bin kein Programmierer. Ich muss mich im Rahmen meines Studiums (Technische Physik) für ein Projekt mit Visual Basic auseinandersetzen. Also ist es durchaus möglich, dass ich mich sehr dumm anstelle
Im Projekt sollen erstmal Daten in eine Datei gespeichert werden von einem Messaufbau. Die Daten landen in einer Datei mit Zeitangabe und Spannung getrennt durch ein Semikolon. Ich habe bereits die Daten aus der Datei eingelesen und an ein Array übergeben. Jetzt möchte ich gern diese Werte als simples x-y-Diagramm darstellen. Es handelt sich bei den Messwerten um periodische Signale, deshalb will ich später noch die Amplitude und die Periodendauer bestimmen. Wenn es die Motivation zulässt, möchte ich die Frequenzen analysieren (Fourier) und die einzelnen Oberwellen ebenfalls als Diagramm darstellen.
Aktuell hänge ich aber an der grafischen Darstellung der rohen Messwerte.
eins vorweg, ich bin kein Programmierer. Ich muss mich im Rahmen meines Studiums (Technische Physik) für ein Projekt mit Visual Basic auseinandersetzen. Also ist es durchaus möglich, dass ich mich sehr dumm anstelle
Im Projekt sollen erstmal Daten in eine Datei gespeichert werden von einem Messaufbau. Die Daten landen in einer Datei mit Zeitangabe und Spannung getrennt durch ein Semikolon. Ich habe bereits die Daten aus der Datei eingelesen und an ein Array übergeben. Jetzt möchte ich gern diese Werte als simples x-y-Diagramm darstellen. Es handelt sich bei den Messwerten um periodische Signale, deshalb will ich später noch die Amplitude und die Periodendauer bestimmen. Wenn es die Motivation zulässt, möchte ich die Frequenzen analysieren (Fourier) und die einzelnen Oberwellen ebenfalls als Diagramm darstellen.
Aktuell hänge ich aber an der grafischen Darstellung der rohen Messwerte.
VB.NET-Quellcode
- Imports System.Collections
- Imports System
- Imports System.IO
- Imports System.Math
- Imports Microsoft.VisualBasic.FileIO
- Imports System.Windows.Forms.DataVisualization.Charting
- Public Class Form1
- Public Function Zeilenzaehlen(ByVal Filename As String) As Integer
- Dim Lines As Integer = 0
- Using oStream As New IO.FileStream(Filename, IO.FileMode.Open, IO.FileAccess.Read)
- ' Blockgröße
- Dim BlockSize As Integer = 16384
- Dim Bytes(BlockSize) As Byte
- Dim ReadSize As Integer
- Dim StartIndex As Integer
- Do
- ReadSize = oStream.Read(Bytes, 0, BlockSize)
- StartIndex = -1
- Do
- StartIndex = Array.IndexOf(Bytes, CByte(13), StartIndex + 1, ReadSize - StartIndex)
- If StartIndex >= 0 Then Lines += 1
- Loop Until StartIndex < 0
- Loop Until ReadSize = 0
- oStream.Close()
- End Using
- Return Lines
- End Function
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- End Sub
- Private Sub cmd_Messwerteladen_Click(sender As Object, e As EventArgs) Handles cmd_Messwerteladen.Click
- Dim Zeilen As Integer
- Dim Spalten As Integer = 2
- Zeilen = Zeilenzaehlen("C:\Saegezahn.csv")
- Dim Messwerte(Zeilen, Spalten - 1) As Double
- Using MyReader As New TextFieldParser("C:\Saegezahn.csv")
- MyReader.TextFieldType = FieldType.Delimited
- MyReader.SetDelimiters(";")
- Dim currentRow As String()
- Dim Zelleninhalt As Double
- Dim Element As Integer = 0
- Dim Ze As Integer = 0
- Dim Sp As Integer = 0
- Dim i As Integer = 0
- While Not MyReader.EndOfData
- Try
- currentRow = MyReader.ReadFields()
- Dim currentField As String
- For Each currentField In currentRow
- Zelleninhalt = currentRow(Element)
- If Element = 0 Then
- Element = 1
- Else
- Element = 0
- End If
- Messwerte(Ze, Sp) = Zelleninhalt
- 'ListBox1.Items.Add(Zelleninhalt)
- If Sp = 0 Then
- Sp = Sp + 1
- Else
- Sp = 0
- End If
- If Sp = 0 Then
- Ze = Ze + 1
- End If
- Next
- Finally
- End Try
- End While
- End Using
- End Sub
- End Class