Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 20.07.2017
Сообщений: 2

Обойти System.ArgumentOutOfRangeException: "startIndex не может быть больше, чем длина строки."

20.07.2017, 04:58. Показов 2710. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, я совсем начинающий не могу разобраться.
Считываю данные с cом-порта,данные приходят строкой в виде:
160 162 164 165 и так далее, но при считывании позиций строки при разбиении на отдельные части, строка при первом прохождении не успевает вся заполниться, поэтому выскакивает ошибка:System.ArgumentOutOfRangeExceptio n: "startIndex не может быть больше, чем длина строки."

Ниже приведен код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
 
namespace Arduino_test
{
    class Program
    {
        static void Main(string[] args)
        {
 
            SerialPort myport = new SerialPort();
            myport.BaudRate = 9600;
            myport.PortName = "COM3";
            myport.Open();
            while (true)
            {
                string data_rx = myport.ReadLine();
                
                String pin2 = data_rx.Substring(0, 3);
                String pin3 = data_rx.Substring(4, 3);
                String pin4 = data_rx.Substring(8, 3);
                String pin5 = data_rx.Substring(12, 3);
                String pin6 = data_rx.Substring(16, 3);
                String pin7 = data_rx.Substring(20, 3);
                String pin8 = data_rx.Substring(24, 3);
                String pin9 = data_rx.Substring(28, 3);
                String pin10 = data_rx.Substring(32, 3);
                String pin11 = data_rx.Substring(36, 3);
                String pin12 = data_rx.Substring(40, 3);
                String pin13 = data_rx.Substring(44, 3);
                String pin14 = data_rx.Substring(48, 3);
                String pin15 = data_rx.Substring(52, 3);
                String pin16 = data_rx.Substring(56, 3);
                String pin17 = data_rx.Substring(60, 3);
                String pin18 = data_rx.Substring(64, 3);
                String pin19 = data_rx.Substring(68, 3);
                String pin20 = data_rx.Substring(72, 3);
                String pin21 = data_rx.Substring(76, 3);
                String pin22 = data_rx.Substring(80, 3);
                String pin23 = data_rx.Substring(84, 3);
                String pin24 = data_rx.Substring(88, 3);
                
 
                Console.WriteLine(pin6);
          
            }
        }
    } 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.07.2017, 04:58
Ответы с готовыми решениями:

Ошибка "startIndex должен быть меньше, чем длина строки."
Привет всем! Появилось вот эта вот ошибка, не могу её устранить " Ошибка "startIndex должен быть меньше, чем длина строки" Вот...

Ошибка "startIndex должен быть меньше, чем длина строки."
Доброго времени суток! Задача такая: "Достать из файла координаты x,y и z, преобразовать в некую строку, которую отправить...

Значение StartIndex не может быть меньше нуля. Имя параметра: startIndex. Смена раскладки с английской на русскую
Пытаюсь сменить текст, введенный на английской раскладке на русскую. То есть, когда если написали "rjn", то надо, чтобы оно...

2
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,422
20.07.2017, 07:08
13Lucifer13, может быть стоит разбирать данные по мере их прихода? Или набивать в один общий буфер пока не получится нужное количество и потом уже парсить?
0
186 / 184 / 97
Регистрация: 30.04.2016
Сообщений: 478
20.07.2017, 10:18
Здравствуйте!

Читать данные с com-порта лучше по событию SerialPort.DataReceived функцией SerialPort.Read.
Пример можно посмотреть здесь https://stackoverflow.com/a/466577
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.07.2017, 10:18
Помогаю со студенческими работами здесь

Какова может быть максимальная длина строки URL?
Поскажите какова может быть максимальная длина строки URL. Например, если передавать большой обьем данных из формы методом не POST, а GET.

Скорость отдачи в 14 раз больше скорости приёма. С чем может быть связано?
В общем я уезжал на денёк, вернулся встроенная сетевая карта не хочет видить кабель(хотя до этого всё работало номально), я воткнул внешнюю...

Постоянная утечка память при работе с System.Net.Sockets.Socket. В чем может быть дело? Код прилагаю
Собственно отправка и получение данных, внутри Метод, возвращающий true или false namespace SocketClient { public partial...

Вводится строка, состоящая из слов, разделенных подчеркиваниями (одним или несколькими). Длина строки может быть разной
Задание: вводится строка, состоящая из слов, разделенных подчеркиваниями (одним или несколькими). Длина строки может быть разной....

System.ArgumentOutOfRangeException: "Индекс и длина должны указывать на позицию в строке. Имя параметра: length"
Подскажите в чем ошибка??? private void button6_Click(object sender, EventArgs e) //Дешифрование с ключом { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru