Serial port -> Label.Text

0

Witam,

Napisalem sobie prosty kod do odbioru danych po Rs232. Wszystko ladnie dziala. W richtext przychodza mi dane:
a111.111
a222.222
a333.333
...
a999.999

Korzystam z eventu do odbioru danych po Rs232. W RichText sa wyswietalane wszystkie pobrane dane, natomiast w label.Text chcilabym miec wyswietlony ostatni wynik. Niestety w label jest ciagle pusty tekst. Domyslam sie, ze po prostu znajduje sie tam ciagle znak "Null". Jak zrobic aby w label.Text byl wyswietalny ostatnio pobrany "a999.999" ? Musze odczytywac dane na biezaco. Dlatego niechcialbym zmieniac sekcji ReadExisting().

    private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        rtbTerminal.Invoke(moj_del1);
    }

    private void WpiszOdebrane()
    {
        temp_RX = serialPort1.ReadExisting();


        rtbTerminal.Text = temp_Rx;
        rtbTerminal.ScrollToCaret();

//wyswietla sie prawidlowo

        label.Text = temp_RX;

//ciagle jest znak NULL

0

Jest w VS coś co nazywa się debugowanie. Pomaga znacznie w tego typu przypadkach gdy coś się dzieje i nie wiesz co.
Ustawiasz sobie w określonym miejscu programu tzw. breakpointa i patrzysz jaką wartość ma interesująca Cię zmienna (w zakładce "watch") - oczywiście trzeba ją tam dodać.
(No ale może niepotrzebnie Ci to piszę bo to wszystko wiesz :)).

0

Mozna jasniej?

Probowalem cos takiego:

 if (temp_RX != "")
                textBox1.Text = temp_RX;

            int totalLines = rtbTerminal.Lines.Length;
            string lastLine = rtbTerminal.Lines[totalLines - 1];
            
            if(lastLine != null)
            textBox1.Text = lastLine;

ale raz dziala, a raz nie.

1

Wklej cały kod.

1 użytkowników online, w tym zalogowanych: 0, gości: 1