Laden...

String in TextBox ausgeben und aktualisieren

Erstellt von benschmoo vor 4 Jahren Letzter Beitrag vor 4 Jahren 2.186 Views
B
benschmoo Themenstarter:in
1 Beiträge seit 2019
vor 4 Jahren
String in TextBox ausgeben und aktualisieren

Hallo, bin totaler Visual Studio Anfänger und habe folgendes Problem:

Ich lese Daten über die Serielle Schnittstelle von meinem Arduino ein, und würde diese gerne in einer textBox ausgeben.
Über die Konsole funktionierts schon gut, jedoch kann ich nichts in die TextBox schreiben.

Hier mal der hierfür interessante Codeteil.


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 FocusButton
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Form1_Load();
        }

        private void Form1_Load()

        {

            serialPort1.DataReceived += SerialPort1_DataReceived1;
            serialPort1.Open();
        }

        private void SerialPort1_DataReceived1(object sender, SerialDataReceivedEventArgs e)
        {
           


            {
                string str = serialPort1.ReadLine();
                Console.WriteLine(str);
              
            }
            // System.Threading.Thread.Sleep(1000);
        }

        private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void TextBox1_TextChanged(object sender, EventArgs e)
        {
          
        }

        private void Label1_Click(object sender, EventArgs e)
        {

        }

        private void Label2_Click(object sender, EventArgs e)
        {

        }

        private void ComboBox5_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void SerialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
           
        }


        private void RichTextBox1_TextChanged(object sender, EventArgs e)
        {
            string str = serialPort1.ReadLine();
            richTextBox1.Text = str;
        }
    }
    
}

Danke, Bene

T
2.219 Beiträge seit 2008
vor 4 Jahren

Bitte den Code einmal sauber formatieren.
So kann diesen niemand lesen und durch deinen Kommentar ist der meiste Code wie auskommentiert.
Bitte Zeilenumbrüche verwenden.

Ebenfalls scheint der Code abgeschnitten bzw. unvollständig zu sein.
Ansonsten vermute ich mal, dass du über die serielle Schnittstelle mal eine Null Terminierung bekommt und diese dann an die Textbox als Text setzt.
Dann ist deine Textbox leer.
Musst du aber mal debuggen bzw. die Bytes wenn möglich direkt loggen 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
11 Beiträge seit 2019
vor 4 Jahren

Was genau möchtst du denn über die TextBox machen?
Wenn der Text, der über den SerialPort reinkommt, angezeigt werden soll, musst du den Code dafür auch in die SerialPort1_DataReceived1()-Methode schreiben, denn jetzt würdest ja dann Text in die TextBox eintragen, wenn der Benutzer in ebendiese etwas eingetippt (->TextChanged-Event) hat. Und da du den Text vom SerialPort bereits in SerialPort1_DataReceived1() ausliest, liefert der erneute Aufruf von ReadLine() in RichTextBox1_TextChanged() dir keinen Text, sprich, sobald Text in die Textbox eingegeben wird, setzt du den wieder auf "".

463 Beiträge seit 2009
vor 4 Jahren

Und als Tipp - gib deinen Controls sprechende Namen.. In 2 Jahren weisst du nicht mehr was TextBox1 oder ComboBox 1 für eine Funktion hat.