Hallo an alle VB Freunde,
ich bin neu in diesem Forum und beschäftige mich aktuell mit dem Thema Sensorwerte mit einem Arduino UNO zu erfassen
und an VB zu senden.
Hab mich lange mit der Kommunikation auseinander gesetzt und bekomme es hin Daten von Arduino zu VB zu senden und umgekehrt.
Nun ist es so das ich mehrere Sensoren (Temperatursensoren) auswerten und an VB senden möchte.
Mit einem Sensorwert ist das ganze absolut problem los.
Doch wie sieht es mit zwei, drei oder vier Werte aus?
Folgendes habe ich schon realisiert. Grundsätzlich funktioniert es. Aber es
gibt einige Probleme. Doch zunächst mal etwas code:
VB-Code:
Vorab bitte die Chart1. erstmal ignorieren. Dazu komme ich später noch.
Hier
mache folgendes. In einem switch Case frage ich im case0 ab ob die
Checkbox1 angeklickt ist. Wenn ja sendet VB auf den Seriellen Port das
Zeichen "A".
Der Arduino empfängt das Zeichen (Ascii 65) und sendet dann den aktuellen Analogwert von A0 zurück.
Dieser Wert z.B. 316 wird in receivedData gespeichert und an die TextBox1.Text gegeben.
Die Case Variable (iState) wird auf 10 gesetzt.
In Case10 wird statt "A" ein "B" (Ascii 66) gesendet. Worauf der Arduino dann den aktuellen Wert von A1 zurück sendet.
In VB wird dann dieser wert in TextBox2.Text ausgegeben.
Die Case Variable (iState) wird auf 0 gesetzt.
Das ganze passiert in einem Timer1 alle 500ms.
Arduino-Code:
Wie oben beschrieben!!!
Jetzt mein Problem:
TextBox1 und Checkbox1 sind für den Wert von A0.
TextBox2 und Checkbox2 für den Wert von A1.
.
.
.
Wähle ich nur Checkbox1 wird der Wert A0 in TextBox1 korrekt dargestellt. Siehe Bild "VB2"
Wähle ich nur Checkbox2 wird der Wert A1 in TextBox2 korrekt dargestellt. Siehe Bild "VB3"
Wähle ich aber beide Checkboxen wird der Wert A0 nicht in TextBox1 sondern TextBox2 dargestellt.
Und der Wert A1 nicht in TextBox2 sondern ind TextBox1 dargestellt. Siehe Bild "VB1"
Mit sicherheit hängt es mit der Methode zusammen wie ich versuche die
richtigen Werte vom Arduino in die richtigen TextBoxen zu bekommen.
Ich würde mich sehr freuen wenn mir da jemand weiterhelfen könnte.
Bin natürlich für eine elegantere Methode absolut offen.
Vielen Dank im Voraus.
LG
Temp-22
ich bin neu in diesem Forum und beschäftige mich aktuell mit dem Thema Sensorwerte mit einem Arduino UNO zu erfassen
und an VB zu senden.
Hab mich lange mit der Kommunikation auseinander gesetzt und bekomme es hin Daten von Arduino zu VB zu senden und umgekehrt.
Nun ist es so das ich mehrere Sensoren (Temperatursensoren) auswerten und an VB senden möchte.
Mit einem Sensorwert ist das ganze absolut problem los.
Doch wie sieht es mit zwei, drei oder vier Werte aus?
Folgendes habe ich schon realisiert. Grundsätzlich funktioniert es. Aber es
gibt einige Probleme. Doch zunächst mal etwas code:
VB-Code:
Vorab bitte die Chart1. erstmal ignorieren. Dazu komme ich später noch.
Hier
mache folgendes. In einem switch Case frage ich im case0 ab ob die
Checkbox1 angeklickt ist. Wenn ja sendet VB auf den Seriellen Port das
Zeichen "A".
Der Arduino empfängt das Zeichen (Ascii 65) und sendet dann den aktuellen Analogwert von A0 zurück.
Dieser Wert z.B. 316 wird in receivedData gespeichert und an die TextBox1.Text gegeben.
Die Case Variable (iState) wird auf 10 gesetzt.
In Case10 wird statt "A" ein "B" (Ascii 66) gesendet. Worauf der Arduino dann den aktuellen Wert von A1 zurück sendet.
In VB wird dann dieser wert in TextBox2.Text ausgegeben.
Die Case Variable (iState) wird auf 0 gesetzt.
Das ganze passiert in einem Timer1 alle 500ms.
VB.NET-Quellcode
- Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- Select Case iState
- Case "0"
- If CheckBox1.Checked = True Then
- SerialPort1.Write("A")
- receivedData = ReceiveSerialData()
- TextBox1.Text = receivedData & " °C"
- Chart1.Series(0).Points.AddY(Val(receivedData))
- iState = 10
- Else
- TextBox1.Text = ""
- receivedData = ""
- iState = 10
- End If
- Case "10"
- If CheckBox2.Checked = True Then
- SerialPort1.Write("B")
- receivedData = ReceiveSerialData()
- TextBox2.Text = receivedData & " °C"
- Chart1.Series(1).Points.AddY(Val(receivedData))
- iState = 0
- Else
- TextBox2.Text = ""
- receivedData = ""
- iState = 0
- End If
- End Select
- End Sub
Arduino-Code:
Wie oben beschrieben!!!
Jetzt mein Problem:
TextBox1 und Checkbox1 sind für den Wert von A0.
TextBox2 und Checkbox2 für den Wert von A1.
.
.
.
Wähle ich nur Checkbox1 wird der Wert A0 in TextBox1 korrekt dargestellt. Siehe Bild "VB2"
Wähle ich nur Checkbox2 wird der Wert A1 in TextBox2 korrekt dargestellt. Siehe Bild "VB3"
Wähle ich aber beide Checkboxen wird der Wert A0 nicht in TextBox1 sondern TextBox2 dargestellt.
Und der Wert A1 nicht in TextBox2 sondern ind TextBox1 dargestellt. Siehe Bild "VB1"
Mit sicherheit hängt es mit der Methode zusammen wie ich versuche die
richtigen Werte vom Arduino in die richtigen TextBoxen zu bekommen.
Ich würde mich sehr freuen wenn mir da jemand weiterhelfen könnte.
Bin natürlich für eine elegantere Methode absolut offen.
Vielen Dank im Voraus.
LG
Temp-22