Ошибка в отправке информации через последовательный порт - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.875 из 5
Похожие ответы