Проверка кода на отправку/получения данных по последовательному порту - C#

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

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

Доброго времени суток! Написал программу, которая должна отравлять через ком-порт координаты, следующим макаром - отправляет строку, ждет ответ и отправляет следующую:
...
public void Read()
        {
            string message="";
            do
            {
                try
                {
                    message = serialPort2.ReadLine();
                }
                catch (TimeoutException)
                { }
 
            } while (message != "@0");
        }
 
        private void SendInf()  // відправка інформації на порт тип STRING
        {
            alpha.mul_X = alpha.textBox_mull(textBox_multiX.Text, textBox_multiX.Enabled);
            alpha.mul_Y = alpha.textBox_mull(textBox_multiY.Text, textBox_multiY.Enabled);
            alpha.mul_XY = alpha.textBox_mull(textBox_multiXY.Text, textBox_multiXY.Enabled);
 
            alpha.summ_X = alpha.textBox_summ(textBox_summX.Text, textBox_summX.Enabled);
            alpha.summ_Y = alpha.textBox_summ(textBox_summY.Text, textBox_summY.Enabled);
            alpha.summ_XY = alpha.textBox_summ(textBox_summXY.Text, textBox_summXY.Enabled);
 
            alpha.X = (int)(alpha.X * alpha.mul_X * alpha.mul_XY) + alpha.summ_X + alpha.summ_XY;
            alpha.Y = (int)(alpha.Y * alpha.mul_Y * alpha.mul_XY) + alpha.summ_Y + alpha.summ_XY;
 
            if (!serialPort2.IsOpen)   //перевірка на відкритий порт
            {
                serialPort2.PortName = ((string)comboBox_COM_ports.SelectedItem);
                serialPort2.Open();
                richTextBox2.Text += ((string)comboBox_COM_ports.SelectedItem);
                richTextBox2.Text += " opened.\n";
            }
            if (serialPort2.IsOpen)  //відправляєм інфу
                richTextBox2.Text += String.Format("{0},{1}{2}", alpha.X, alpha.Y, alpha.end_msg);
                richTextBox2.Text += "\n";   
            serialPort2.Write(
                    String.Format("{0},{1}{2}",alpha.X, alpha.Y, alpha.end_msg));
        }
...
Написать-то написал, да как проверить? Первое что приходит на ум - создать еще один текст-бокс через который будем слать обратно строки.. Я создал виртуальный com-мост (COM2-COM3) сервер-клиент, и теперь через текст-бокс по COM3 отправляю назад строки:
...
 private void button1_Click(object sender, EventArgs e)
        {
            if (!serialPort3.IsOpen)   //перевірка на відкритий порт
            {
                serialPort3.PortName = "COM3";
                serialPort3.Open();
            }
            serialPort3.Write(textBox1.Text);
        }
...
Да вот незадача - после отправки сервером первой строки, никакие кнопки в форме не работают, когда проводить курсором по кнопкам "свернуть", "нразвернуть", "закрыть", видно их мерцание, тоесть программа в постоянном чтении и никакие кнопки в этот момент не работают. Как проверить работоспособность кода?

Решение задачи: «Проверка кода на отправку/получения данных по последовательному порту»

textual
Листинг программы
private void ReadFile(string filename)
        {
            string line;
            StreamReader reader = new StreamReader(richTextBox3.Text);
            while ((line = reader.ReadLine()) != null)
            {
                alpha.Find(line);
                if (alpha.Correct_coord == true)
                {
                    SendInf();
                    Read();
                }
 
            }
            reader.Close();
        }

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


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

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

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