@leobatura
network engineer

Как в С# прочитанные данные с COM порта вывести в textBox?

Пишу небольшую утилитку для работы с com-портами активного оборудования. Никак не получается выводить логи в textBox.5c2f279b3b3aa423193738.png
namespace Proshivator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string[] ports = SerialPort.GetPortNames();
            comboBox1.Items.AddRange(ports);
        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

            try
            {
                serialPort1.PortName = comboBox1.Text;
                serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);
                serialPort1.DataBits = 8;
                serialPort1.StopBits = StopBits.One;
                serialPort1.Parity = Parity.None;
                serialPort1.Handshake = Handshake.RequestToSend;

                serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1.DataReceived);

                serialPort1.Open();
                progressBar1.Value = 100;

                if (serialPort1.IsOpen)
                {
                    richTextBox1.Text = "Порт открыт\r\nСоединение...";
                    
                }
                
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message, "Ошибка COM порта. Проверьте подключение", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            serialPort1.ReadTimeout = 500;
            serialPort1.WriteTimeout = 500;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
                progressBar1.Value = 0;
                richTextBox1.Text = "Порт закрыт";
            }
            
                
        }

        private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            string recievedData = serialPort1.ReadExisting();
         
        }
    }
}
  • Вопрос задан
  • 1918 просмотров
Решения вопроса 1
@leobatura Автор вопроса
network engineer
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            dataIN = serialPort1.ReadExisting();
            this.Invoke(new EventHandler(ShowData));
        }

        private void ShowData(object sender, EventArgs e)
        {
            richTextBox1.Text += dataIN;
        }
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы