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

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

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

Доброго времени суток! Написал программу, которая должна отравлять через ком-порт координаты, следующим макаром - отправляет строку, ждет ответ и отправляет следующую:
Листинг программы
  1. ...
  2. public void Read()
  3. {
  4. string message="";
  5. do
  6. {
  7. try
  8. {
  9. message = serialPort2.ReadLine();
  10. }
  11. catch (TimeoutException)
  12. { }
  13. } while (message != "@0");
  14. }
  15. private void SendInf() // відправка інформації на порт тип STRING
  16. {
  17. alpha.mul_X = alpha.textBox_mull(textBox_multiX.Text, textBox_multiX.Enabled);
  18. alpha.mul_Y = alpha.textBox_mull(textBox_multiY.Text, textBox_multiY.Enabled);
  19. alpha.mul_XY = alpha.textBox_mull(textBox_multiXY.Text, textBox_multiXY.Enabled);
  20. alpha.summ_X = alpha.textBox_summ(textBox_summX.Text, textBox_summX.Enabled);
  21. alpha.summ_Y = alpha.textBox_summ(textBox_summY.Text, textBox_summY.Enabled);
  22. alpha.summ_XY = alpha.textBox_summ(textBox_summXY.Text, textBox_summXY.Enabled);
  23. alpha.X = (int)(alpha.X * alpha.mul_X * alpha.mul_XY) + alpha.summ_X + alpha.summ_XY;
  24. alpha.Y = (int)(alpha.Y * alpha.mul_Y * alpha.mul_XY) + alpha.summ_Y + alpha.summ_XY;
  25. if (!serialPort2.IsOpen) //перевірка на відкритий порт
  26. {
  27. serialPort2.PortName = ((string)comboBox_COM_ports.SelectedItem);
  28. serialPort2.Open();
  29. richTextBox2.Text += ((string)comboBox_COM_ports.SelectedItem);
  30. richTextBox2.Text += " opened.\n";
  31. }
  32. if (serialPort2.IsOpen) //відправляєм інфу
  33. richTextBox2.Text += String.Format("{0},{1}{2}", alpha.X, alpha.Y, alpha.end_msg);
  34. richTextBox2.Text += "\n";
  35. serialPort2.Write(
  36. String.Format("{0},{1}{2}",alpha.X, alpha.Y, alpha.end_msg));
  37. }
  38. ...
Написать-то написал, да как проверить? Первое что приходит на ум - создать еще один текст-бокс через который будем слать обратно строки.. Я создал виртуальный com-мост (COM2-COM3) сервер-клиент, и теперь через текст-бокс по COM3 отправляю назад строки:
Листинг программы
  1. ...
  2. private void button1_Click(object sender, EventArgs e)
  3. {
  4. if (!serialPort3.IsOpen) //перевірка на відкритий порт
  5. {
  6. serialPort3.PortName = "COM3";
  7. serialPort3.Open();
  8. }
  9. serialPort3.Write(textBox1.Text);
  10. }
  11. ...
Да вот незадача - после отправки сервером первой строки, никакие кнопки в форме не работают, когда проводить курсором по кнопкам "свернуть", "нразвернуть", "закрыть", видно их мерцание, тоесть программа в постоянном чтении и никакие кнопки в этот момент не работают. Как проверить работоспособность кода?

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

textual
Листинг программы
  1. private void ReadFile(string filename)
  2.         {
  3.             string line;
  4.             StreamReader reader = new StreamReader(richTextBox3.Text);
  5.             while ((line = reader.ReadLine()) != null)
  6.             {
  7.                 alpha.Find(line);
  8.                 if (alpha.Correct_coord == true)
  9.                 {
  10.                     SendInf();
  11.                     Read();
  12.                 }
  13.  
  14.             }
  15.             reader.Close();
  16.         }

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


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

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

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы