Ошибка в отправке информации через последовательный порт - C#
Формулировка задачи:
Доброго времени суток!
Снова прошу помощи. Код работал нормально, я решил немного все упорядочить и переписать ее с помощью классов:
а вот и сам класс
А ошибка, собственно, вот о чем
private void ReadFile(string filename)
{
string line;
Coordinates alpha = new Coordinates();
StreamReader reader = new StreamReader(richTextBox3.Text);
while ((line = reader.ReadLine()) != null)
{
alpha.Find(line);
//--------------пишем лог
string strX = (alpha.X).ToString();
string strY = (alpha.Y).ToString();
//char chX = char.Parse(strX);
//char chY = char.Parse(strY);
if (strX != "0") //видаляэм "0" який відправляється коли в стрічці нема потрібних координат
{ //--------------пишем лог
richTextBox2.Text += strX;
richTextBox2.Text += "\n";
SendInf(strX); //<============= ВЫЗОВ ФУНКЦИИ ГДЕ ПРОИСХОДИТ ОШИБКА!!!!!!!!
}
if (strY != "0") //видаляэм "0" який відправляється коли в стрічці нема потрібних координат
{ //--------------пишем лог
richTextBox2.Text += strY;
richTextBox2.Text += "\n";
//-------------пишем лог КІНЕЦЬ
SendInf(strY);
}
}
reader.Close();
}
private void SendInf(string inf) // відправка інформації на порт тип STRING
{
if (!serialPort2.IsOpen) //перевірка на відкритий порт
{
serialPort2.PortName = "COM2";
serialPort2.Open();
richTextBox2.Text = "COM2 opened.\n";
}
if (serialPort2.IsOpen) //відправляєм інфу
{
string text = inf.ToString();
serialPort2.Write(text); // <========== ОШИБКА ЗДЕСЬ!!
}
}
} class Coordinates
{
public Coordinates() { }
public int X=0;
public int Y=0;
public bool laser_switch=false;
const int end_msg = -1; // маркер кінця повідомлення
public void Find (string line)
{
int length = 10; //довжина масиву
char[] fin_array = new char[length]; // масив куди будуть поміщатися координати із стрічки
char[] array = line.ToCharArray(); //масив символів із стрічки
int i = 0;
if (line.IndexOf('X') != -1 || line.IndexOf('Y') != -1)
{
while (array[i] != 'X') //шукаєм індекс Х
i++;
//--------------підраховуєм потрібну кількість символів для динамічного масиву----------------
length = i;
while (array[length] != ' ')
{
length++;
}
//--------------------------------------------------------------------------------------------
Array.Resize(ref fin_array, length - i); //змінюєм величину масиву
int j = 0;
while (array[i + 1] != ' ') // записуєм координати Х в fin_array
{
fin_array[j] = array[i + 1];
i++;
j++;
}
string str = new string(fin_array); //масив переводим в стрічку
X = int.Parse(str); //перетворюєм стрічку в INT
while (line.IndexOf('Y', i) != -1 || line.IndexOf('y', i) != -1) //шукаєм Y
i++;
//--------------підраховуєм потрібну кількість символів для динамічного масиву----------------
length = 0;
while (array[length] != ' ')
{
length++;
}
//--------------------------------------------------------------------------------------------
Array.Resize(ref fin_array, length); //змінюєм величину масиву
j = 0;
while (array[i] != ' ') // записуєм координати Y в fin_array
{
fin_array[j] = array[i];
i++;
j++;
}
str = new string(fin_array); //масив переводим в стрічку
Y = int.Parse(str); //перетворюєм стрічку в INT
}
}"Необработанное исключение типа "System.IO.IOException" в System.dll Дополнительные сведения: Параметр задан неверно."
Поскажите как ее убрать?Решение задачи: «Ошибка в отправке информации через последовательный порт»
textual
Листинг программы
string inf