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 });
}