Hej,

Z zewnętrznego urządzenia wysyłam na komputer dane, które w terminalu Putty wyglądają następująco:

screenshot-20180811184552.png

Są to ramki o stałej długości, zakończone znakiem "\r\n". Parametry transmisji: 9600, 8 bitów danych, 1 bit stopu, brak parzystości.

Chciałbym odebrać taką ramkę w aplikacji napisanej w języku C#. Korzystam z VS Community 2017.

Robię to tak:

System.IO.Ports.SerialPort port;
delegate void Delegate1(byte[] buffer);
Delegate1 my_del1;

....

        public tutorialCOM()
        {
            InitializeComponent();

            port = new SerialPort();
            
            port.ReadTimeout = 5000;
            port.WriteTimeout = 5000;
            //port.ReadBufferSize = 10000;
            port.Handshake = Handshake.None;

            port.ReceivedBytesThreshold = 1;        
            port.DataReceived += new SerialDataReceivedEventHandler(DataRecievedHandler);
            my_del1 = new Delegate1(DisplayData);
        }

        private void DataRecievedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            int count = port.BytesToRead;
            if (count == 0) return;

            byte[] buffer = new byte[count];
            int data = port.Read(buffer, 0, count);

            if (data == 0) return;

            textBox1.Invoke(my_del1, new object[] { buffer });
        }

        private void DisplayData(byte[] buffer)
        {
            textBox1.AppendText(System.Text.Encoding.UTF8.GetString(buffer));
        }

Niestety, tak wygląda to co otrzymuję w textBox1:

screenshot-20180811185106.png

Jak widać, gubione jest kilka pierwszych bajtów. Nie mam pojęcia co może być źle. Dodam, że próbowałem metod takich jak ReadExisting, ReadLine i podobnych, jednakże zawsze z podobnym skutkiem.

Jeżeli ktoś jest wstanie pomóc, byłbym wdzięczny.

Pozdrawiam