Po serialporcie gadam z urządzeniem zewnętrznym, który wysyła mi string zakończony znakiem specjalnym '\r'. Textbox interpretuje to jako nową linię, zamiast ustawić kursor na początek tej samej linii. W terminalach typu putty działa to dobrze. Wrzucam kod, mam nadzieję, że ktoś pomoże mi to rozgryźć. Spędziłem już an tym kilka godzin, bez postępu.
private void BT_Test_Click(object sender, RoutedEventArgs e)
{
serial.PortName = CB_COM.SelectedItem.ToString();
serial.BaudRate = 38400;
serial.Handshake = System.IO.Ports.Handshake.None;
serial.Parity = Parity.None;
serial.DataBits = 8;
serial.StopBits = StopBits.One;
serial.ReadTimeout = 200;
serial.WriteTimeout = 50;
serial.Open();
serial.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(Recieve);
serial.Write("k");
}
private delegate void UpdateUiTextDelegate(string text);
private void Recieve(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
//recieved_data = serial.ReadExisting();
//Dispatcher.Invoke(DispatcherPriority.Send, new UpdateUiTextDelegate(WriteData), recieved_data);
recieved_data = serial.ReadExisting();
Dispatcher.Invoke(DispatcherPriority.Send, new UpdateUiTextDelegate(WriteData), recieved_data);
}
private void WriteData(string text)
{
TB_Konsola.Text += text;
//TB_Konsola.AppendText(text)
//TB_Konsola.Focus();
//TB_Konsola.CaretIndex = TB_Konsola.Text.Length;
//TB_Konsola.ScrollToEnd();
}