myCSharp.de - DIE C# und .NET Community (https://www.mycsharp.de/wbb2/index.php)
- Entwicklung (https://www.mycsharp.de/wbb2/board.php?boardid=3)
-- GUI: Windows-Forms (https://www.mycsharp.de/wbb2/board.php?boardid=24)
--- String in TextBox ausgeben und aktualisieren (https://www.mycsharp.de/wbb2/thread.php?threadid=121938)


Geschrieben von benschmoo am 11.06.2019 um 16:31:
  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.

C#-Code:
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


Geschrieben von T-Virus am 11.06.2019 um 17:19:
 
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


Geschrieben von lukasrad02 am 12.06.2019 um 15:41:
 
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 "".


Geschrieben von Stefan.Haegele am 26.06.2019 um 07:25:
 
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.


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 16.09.2019 00:03