Ошибка в отправке информации через последовательный порт - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д