2014-01-24 2 views
0

У меня есть приложение связи RS232 с 2 формами RichTextBox. Одна форма предназначена для регистрации сообщений «Исходящие», а другая форма предназначена для получения сообщений «Входящие» из порта. Я использовал тот же синтаксис для протоколирования сообщений, но по какой-то причине я получаю случайные форматы в моем окне «Входящие» (чтение из порта).C# RichTextBox Отображение случайного формата

Есть ли способ получить поле «Входящие» для отображения каждого входящего байта ответа [] на новой строке? Я использую гипертерминал, поэтому все, что я отправляю, должно немедленно возвращаться через тот же порт.

Оба RTB окна используют следующий метод LOG

 private void Log(LogMsgType msgtype, string msgOut) 
    { 
     rtbOutgoing.Invoke(new EventHandler(delegate 
     { 
      rtbOutgoing.SelectedText = string.Empty; 
      rtbOutgoing.SelectionFont = new Font(rtbOutgoing.SelectionFont, FontStyle.Bold); 
      rtbOutgoing.SelectionColor = LogMsgTypeColor[(int)msgtype]; 
      rtbOutgoing.AppendText(msgOut); 
      rtbOutgoing.ScrollToCaret(); 
     })); 
    } 

Screenshot of Output Windows

+0

Можете ли вы показать нам код, который вызывает Log()? –

+0

'LogOutgoing (LogMsgType.Outgoing, "Short Address" + i.ToString() + "\ n");' – Nevets

+0

Я не вижу строку «Short Address» в любом месте вашего вывода. Вы уверены, что это правильный код? –

ответ

0

Основываясь на ваш комментарий, вы должны быть в состоянии попробовать что-то вроде этого. Мы собираемся изменить то, что i.ToString() выводит так, что она преобразуется в новой строки с разделителями данных вместо разделенных пробелами:

Попробуйте это:

LogOutgoing(LogMsgType.Outgoing, "Short Address" + i.ToString().Replace(" ", "\n") + "\n"); 

Это будет изменить все пробелы в " \ n "перед тем, как строка будет отправлена ​​в функцию log().

Смежные вопросы