Проверка кода на отправку/получения данных по последовательному порту - C#
Формулировка задачи:
Доброго времени суток!
Написал программу, которая должна отравлять через ком-порт координаты, следующим макаром - отправляет строку, ждет ответ и отправляет следующую:
Написать-то написал, да как проверить? Первое что приходит на ум - создать еще один текст-бокс через который будем слать обратно строки.. Я создал виртуальный com-мост (COM2-COM3) сервер-клиент, и теперь через текст-бокс по COM3 отправляю назад строки:
Да вот незадача - после отправки сервером первой строки, никакие кнопки в форме не работают, когда проводить курсором по кнопкам "свернуть", "нразвернуть", "закрыть", видно их мерцание, тоесть программа в постоянном чтении и никакие кнопки в этот момент не работают. Как проверить работоспособность кода?
Листинг программы
- ...
- 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));
- }
- ...
Листинг программы
- ...
- 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();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д