Laden...

Werte über SerialPort darstellen mithilfe der Toolbox

Erstellt von laoleo vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.892 Views
L
laoleo Themenstarter:in
10 Beiträge seit 2017
vor 6 Jahren
Werte über SerialPort darstellen mithilfe der Toolbox

Hallo zusammen,

ich kann die Temperaturwerte einlesen mit dem Arduino. Das funktioniert auch.

Jetzt möchte ich die Werte mit C# darstellen. An dem Code ist etwas falsch. Weiß jemand wie man diese Funktion richtig programmiert, damit die Senorwerte über das Label ausgegeben werden?

private void label1_Click(object sender, EventArgs e)

Ich bin für jede Hilfe dankbar!

Das ist der Code in C#:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;

namespace WindowsFormsApp5
{
    public partial class Form1 : Form
    {
        SerialPort myport;

        public Form1()
        {
            InitializeComponent();
            Verbindung();
        }

        private void Verbindung()
        {
            try
            {
                myport = new SerialPort();
                myport.BaudRate = 9600;
                myport.PortName = "COM5";
                myport.Open();
                MessageBox.Show("Arduino erkannt");
            }
            catch (Exception)
            {
                MessageBox.Show("Arduino nicht angeschlossen");
            }
        }


        private void label1_Click(object sender, EventArgs e)
        {
            string temp = myport.ReadLine();
            label1.Text = temp;
        }
        
    }
}
Hinweis von Coffeebean vor 6 Jahren

Bitte benutze die richtigen Code-Tags [Hinweis] Wie poste ich richtig?

T
2.224 Beiträge seit 2008
vor 6 Jahren

@laoleo
Ein paar grundsätzliche Sachen.

1.Code in Code Tags packen, so geht sonst die Formatierung verloren und es macht auch den Code für andere leserlich.
2.Wie sieht die Fehlermeldung aus bzw. was passiert? Dein Code sieht auf den ersten Blick okay aus, aber ohne zu wissen was das Problem ist, kann man nicht sagen woran es happert.

Nachtrag:
Wenn du in der Methode Verbindung die Exception auch mal ausgeben lassen würdest, dann könntest du ggf. auch den Fehler mal anzeigen.
Hier wird deine Verbindung scheinbar nicht aufgebaut.
Aber dazu mal die Exception fangen und ausgeben lassen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

L
laoleo Themenstarter:in
10 Beiträge seit 2017
vor 6 Jahren

@T-Virus danke schon mal!

Die Verbindung wird aufgebaut mit dem Arduino. Ich habe mir die Temperaturwerte des Arduinos auch mal zum testen über die Konsole über Visual Studio ausgeben lassen. Das funktioniert. Es erscheint auch keine Fehlermeldung Woran es scheitert ist:

1:Das die Werte von dem SeriellenPort gelesen werden
2: Das die Werte in der Textbox (Label) in C# mit dem Program Visual Studio erscheinen.

laoleo

L
laoleo Themenstarter:in
10 Beiträge seit 2017
vor 6 Jahren

Hier soll der Temperaturwert angezeigt werden.

T
2.224 Beiträge seit 2008
vor 6 Jahren

@laoleo
Wenn dein Code stimmt, dann müsstest du auf dein Label klicken, damit er die Werte ausliest.
Hast du dies auch mal getan?
Besser wäre dafür eher ein Button oder noch besser ein BackgroundWorker, der im Hintergrund alle X Sekunden die aktuellen Werte ausliest und dir mit Zeitstempel den Wert anzeigt.
Somit könntest du die aktuellen Daten ohne Interaktion auslesen.

Ansonsten solltest du prüfen ob die Einstellungen deines seriellen Ports auch mit den Einstellungen deines lokalen Tests über die Konsole sind.
Ggf. fehlt hier nämlich noch eine Einstellung, weshalb du keine Daten bekommt.

Aktuell setzt du nur die Baudrate und den Port.
Stimmen den die Bits für Parität, Data und Stop?
Diese müsstest du i.d.R. auch richtig setzen, damit du korrekt auf dem Port Daten senden und lesen kannst.

Bsp.
https://msdn.microsoft.com/de-de/library/system.io.ports.serialport.parity(v=vs.110).aspx

Sollte dir helfen um den Port sauber zu konfigurieren.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

L
laoleo Themenstarter:in
10 Beiträge seit 2017
vor 6 Jahren

Ich habe jetzt ein wenig geändert (ReadTimeout) und es funktioniert.

Danke