Проверка кода на отправку/получения данных по последовательному порту - 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д