Hallo,
ich bin zur Zeit mit meinem Abschlussprojekt beschäftigt. Es wird eine CSV Datei eingelesen, in der sich die CPU Temperaturen befinden. Anschließend leuchtet auf einem MSR Board eine dementsprechende LED auf. Nun soll jedesmal wenn sich die CSV aktualisiert das Array der Werte aktualisiert werden und der letzte, neuste Wert ins TextFeld geschrieben werden. Bei allen Lösungen, die ich bisher hatte ist das Programm einfach ausgegangen. Ohne Fehler!
Ich hänge einfach mal das KOMPLETTE Programm an.
(Wenn etwas komisch programmiert ist bitte nicht so hart sein ^^)
ich bin zur Zeit mit meinem Abschlussprojekt beschäftigt. Es wird eine CSV Datei eingelesen, in der sich die CPU Temperaturen befinden. Anschließend leuchtet auf einem MSR Board eine dementsprechende LED auf. Nun soll jedesmal wenn sich die CSV aktualisiert das Array der Werte aktualisiert werden und der letzte, neuste Wert ins TextFeld geschrieben werden. Bei allen Lösungen, die ich bisher hatte ist das Programm einfach ausgegangen. Ohne Fehler!
Ich hänge einfach mal das KOMPLETTE Programm an.
(Wenn etwas komisch programmiert ist bitte nicht so hart sein ^^)
VB.NET-Quellcode
- Imports System.IO
- Public Class Form1
- Dim Datei As Object
- Dim myComPort As IO.Ports.SerialPort
- Private Sub ReadCSVFileToArray()
- Dim Reihe As Long
- Dim Spalte As Long
- Dim x As Integer
- Dim y As Integer
- Dim Test(1, 1) As String
- If Datei = "" Then
- MsgBox("Bitte erst eine Datei auswählen.")
- Else
- 'Check if file exist
- If File.Exists(Datei) Then
- Dim tmpstream As StreamReader = File.OpenText(Datei)
- Dim dateireihe() As String
- Dim Buffer() As String
- dateireihe = tmpstream.ReadToEnd().Split(Environment.NewLine)
- 'Auslesen des Ordners der CSV Datei
- Dim pfad As String
- pfad = Path.GetDirectoryName(Datei)
- 'Starten eines neuen FileSystemWatchers in dem Ordner der CSV. Beim ändern einer Datei wird das Event OnChanged gestartet
- Dim spy As New FileSystemWatcher()
- spy.Path = pfad
- spy.NotifyFilter = (NotifyFilters.LastWrite)
- AddHandler spy.Changed, AddressOf OnChanged
- spy.EnableRaisingEvents = True
- ' Display the data in textbox
- TextBox1.Text = TextBox1.Text & "In diesem Textfeld sehen sie die derzeitigen Temperaturwerte ihrer CPU."
- TextBox1.Text = TextBox1.Text & vbNewLine & "Diese aktualisieren sich alle 30 Sekunden."
- TextBox1.Text = TextBox1.Text & vbNewLine
- TextBox1.Text = TextBox1.Text & vbNewLine
- ' Redimension the array.
- Reihe = UBound(dateireihe)
- Buffer = dateireihe(0).Split(",")
- Spalte = UBound(Buffer)
- ReDim Test(Reihe, Spalte)
- ' Copy the data into the array.
- For x = 0 To Reihe
- Buffer = dateireihe(x).Split(",")
- For y = 0 To Spalte
- Test(x, y) = Buffer(y)
- Next
- Next
- tmpstream.Close()
- Dim CpuTemp As Integer
- Dim Cputemperatur(1) As Integer
- ReDim Cputemperatur(CpuTemp)
- For x = 8 To Reihe - 1
- For y = 0 To Spalte
- TextBox1.Text = TextBox1.Text & "Ihre derzeitige Cpu Temperatur beträgt: "
- CpuTemp = Test(x, y)
- TextBox1.Text = TextBox1.Text & CpuTemp & "°C"
- TextBox1.Text = TextBox1.Text & Environment.NewLine
- Next
- Next
- 'Fehler des Programmes werden ab hier übersrprungen
- On Error Resume Next
- 'Sollte die CPU Temperatur über 50° sein, so färbt sich die PictureBox rot und die rote LED des MSR Boards leuchtet auf
- If (CpuTemp > 50) Then
- PictureBox1.BackColor = Color.Red
- myComPort.DtrEnable = False
- myComPort.RtsEnable = True
- Else
- 'Sollte die CPU Temperatur <=50° sein, so färbt sich die PictureBox grün und die grüne LED des MSR Boards leuchtet auf
- PictureBox1.BackColor = Color.Green
- myComPort.RtsEnable = False
- myComPort.DtrEnable = True
- On Error GoTo 0
- End If
- 'Ans Ende der Box springen
- With TextBox1
- .Select()
- SendKeys.Send("^({END})")
- End With
- End If
- End If
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- ReadCSVFileToArray()
- End Sub
- Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
- End Sub
- Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
- End Sub
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- PictureBox1.BorderStyle = 1
- PictureBox2.BorderStyle = 1
- End Sub
- Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
- Datei = FktDatei()
- End Sub
- Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
- 'Bei einem Fehler wird zu dem Punkt "Fehler" gesprungen, welcher dann eine Fehler Meldung ausgibt und die Picture Box rot färbt
- On Error GoTo Fehler
- 'Es wird versucht den COM Port zu öffnen. Sollte dies ohne Fehler erfolgen, so färbt sich die PictureBox grün und das Sub wird verlassen
- myComPort = New IO.Ports.SerialPort("COM" + RichTextBox1.Text)
- myComPort.Open()
- If (Err.Number = 0) Then
- PictureBox2.BackColor = Color.Green
- Exit Sub
- End If
- Fehler:
- PictureBox2.BackColor = Color.Red
- MsgBox("COM-Port nicht verfügbar")
- End Sub
- Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
- 'Sollte der COM Port geschlossen werden, so färbt sich die PictureBox gelb
- myComPort.Close()
- PictureBox1.BackColor = Color.Yellow
- End Sub
- Public Function FktDatei()
- 'Einlesen der Datei
- Dim pathinfo As Object
- Dim openFileDialog1 As New OpenFileDialog()
- openFileDialog1.Filter = "Text (*.CSV)|*.CSV|Alle Dateien (*.*)|*.*"
- openFileDialog1.Title = "Wähle die auszulesende Csv Datei aus."
- openFileDialog1.InitialDirectory = "C:\"
- If openFileDialog1.ShowDialog() = DialogResult.OK Then
- ListBox1.Items.AddRange(openFileDialog1.FileNames)
- End If
- ' Load the file.
- pathinfo = openFileDialog1.FileName
- FktDatei = pathinfo
- End Function
- Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
- MsgBox("Datei wurde geändert")
- End Sub
- End Class