Com порты для чайников - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, не получается организовать вывод данных, принятых с com порта, в textbox.
namespace Arduino
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            serialPort1.Close();
        }
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (serialPort1.IsOpen) serialPort1.Close();
        }
        
        private void BtnLED13on_Click(object sender, EventArgs e)
        {
            if (CbOnOff.Checked)
            {
                serialPort1.Write("13PinOn");
                TextBoxLED.Text = "Питание на 13 пин подано";
            }
            else { }
        }
        private void BtnLED13off_Click(object sender, EventArgs e)
        {
            if (CbOnOff.Checked)
            {
                serialPort1.Write("13PinOff");
                TextBoxLED.Text = "Питание на 13 пин отключено";
            }
            else { }
        }
 
        private void BtnLED13mig_Click(object sender, EventArgs e)
        {
            if (CbOnOff.Checked)
            {
                serialPort1.Write("13PinPulse");
                TextBoxLED.Text = "Питание на 13 пин мигает";
            }
            else { }
        }
        private void CbOnOff_CheckedChanged(object sender, EventArgs e)
        {
            
            if (TXLOG.Text == "" && TXPASS.Text == "")
            {
                
                if (CbOnOff.Checked)
                {
                    MessageBox.Show("Изменения разрешены");
                    serialPort1.Open();
      
                }
                else
                {
                    MessageBox.Show("Изменения ЗАПРЕЩЕНЫ");
                    serialPort1.Close();
                }
            }
            else
            {
                MessageBox.Show("АВТОРИЗУЙТЕСЬ!");
                CbOnOff.Checked = false;
            }
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
                serialPort1.Write("Cmd:"+TBconsole.Text);  
        }
        private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            string readstring;
            readstring = serialPort1.ReadLine();
            TBconsole.AppendText(readstring);
        }
    }
}
настройки порта
 this.serialPort1.DtrEnable = true;
            this.serialPort1.PortName = "COM4";
            this.serialPort1.ReadTimeout = 500;
            this.serialPort1.WriteTimeout = 500;
            this.serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.DataReceivedHandler);
Ругается на
TBconsole.AppendText(readstring);
Передача данных в com порт происходит без проблем, а вот чтение не выходит

Решение задачи: «Com порты для чайников»

textual
Листинг программы
 private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            string newText;
            newText = serialPort1.ReadLine();
            if (TBconsole.InvokeRequired)
            {
                TBconsole.Invoke(new Action<string>((s) => TBconsole.Text = s), newText);
            }
            else
            {
                TBconsole.Text = newText;
            }
 
            if (newText == "a")
            {
                TBout.Text = "АКТИВИРОВАН ПЕРВЫЙ РЕЖИМ РАБОТЫ";
            }
            if (newText == "b")
            {
                TBout.Text = "АКТИВИРОВАН ВТОРОЙ РЕЖИМ РАБОТЫ";
            }
            if (newText == "c")
            {
                TBout.Text = "АКТИВИРОВАН ТРЕТИЙ РЕЖИМ РАБОТЫ";
            }
            if (newText == "d")
            {
                TBout.Text = "АКТИВИРОВАН ЧЕТВЕРТЫЙ РЕЖИМ РАБОТЫ";
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5
Похожие ответы