Witam, jak w temacie
Piszę program do obsługi czujników temperatury na układzie DS18S20
Mam tylko problem z odczytem
Kiedy wykonuję funkcję odczytu w pętli nie ma z tym problemu, ale niestety nie potrafię nic zrobić z danymi bo te zmieniają swoją wartość (od 0 do 89) z każdym "cyklem".
Wygląda to jak na filmie
Kod wyglądał mniej/więcej tak:

serialPort1.PortName = "Com1"; //Numer portu
            serialPort1.BaudRate = 19200;  //Ustalenie prędkości połączenia
            serialPort1.Open();            //Otwarcie portu
            serialPort1.DataBits = 8;
            if (serialPort1.IsOpen == true)
            {
                for (int a = 1; a < 10; a++)
                {
                        RxString = serialPort1.ReadExisting();
                        labelT1.Text = RxString;
                        labelT1.Refresh();
                        System.Threading.Thread.Sleep(200);
                 }
 

Byłoby wszystko w porządku, ale jak widać wyświetlane dane "migają" i nic nie potrafię z nimi zrobić (zapisać do zmiennej itd.) - za to mają prawidłową długość 89 bajtów.

Znowu dla tego kodu:

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

namespace DS18s20
{
    public partial class Form1 : Form
    {

        public string RxString;
        double[] tablica;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.PortName = "Com1";
            serialPort1.BaudRate = 19200;
            serialPort1.Open();
            serialPort1.DataBits = 8;

        }

        private void DisplayText(object sender, EventArgs e)
        {


            if (RxString.Length > 1)
            {
                label1.Text = RxString;
                if (RxString.Length == 89)
                {
                    label3.Text = RxString.Substring(1, 33);
                }
                label2.Text = Convert.ToString(RxString.Length);
                label1.Refresh();
                label2.Refresh();
                label3.Refresh();
                Thread.Sleep(1900);

            }

                


                

               
        }// Reakcja na otrzymywane dane

        private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
           
            RxString = serialPort1.ReadExisting();
            this.Invoke(new EventHandler(DisplayText));

            
        } // Odebranie danych i przypisanie ich pod zmienną RxString i wywołanie funkcji "DisplayText"

//do kontrolki serialPort1 przypisuje funkcję "serialPort_DataReceived" w zakłądce events>DataRecived

    }
}

Dane mają różną długość :-/
Widać to na filmie

Ktoś podpowie co mogę z tym zrobić?
Dodam, że nie programuję na co dzień.
Jest to mój pierwszy program w C#

Za pomoc z góry dziękuję

Pozdrawiam, Krzysiek