Проверка кода на отправку/получения данных по последовательному порту - 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();
}