Pisze programik, który ma przekazywać dane pomiędzy dwoma portami RS-232 i je wyświetlać.
W zasadzie działa, ale na niektórych sprzętach przekazuje i wyświetla poprawnie tylko dwa pierwsze znaki a później odbiera błędne dane z portu RS-232.

Podejrzewam, że to może być problem z wątkiem SerialDataReceivedEventHandler(this.RS1rx). Ten wątek należy jakoś blokować aby uruchamiał się tylko raz, lub jakoś inaczej go kontrolować ?
Macie jakiś pomysł ?

Poniżej moja konfiguracja i funkcja do odbioru dla jednego z portów, dla drugiego wygląda analogicznie.


                RS1 = new SerialPort(RS1cb.SelectedItem.ToString(), System.Int32.Parse(RSspeedcb.Text.ToString()), Parity.None, 8, StopBits.One);


                RS1.Handshake = Handshake.None;
                RS1.WriteBufferSize = 200;
                RS1.ReadBufferSize = 200;
//                RS1.ReceivedBytesThreshold = 4;
                this.RS1.DataReceived += new SerialDataReceivedEventHandler(this.RS1rx);
                RS1.Open();

        private void RS1rx(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
//            Thread.Sleep(200);

               string data = RS1.ReadExisting();
               RS2.WriteLine(data);

               txtLog.Invoke(new SetTextDeleg(SetText), new object[] { data });

        }