Я стараюсь делать split, который позволял бы мне разделять данные, которых серийный порт посылает мне, но в момент чтения их, приложение задерживается и посылает мне ошибку в массиве это часть кода, который я использую, чтобы делать split, я хотел бы знать, что может производить меня проблема.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private delegate void DelegadoAcceso(String accion);
private String strBufferIn;
private String strbufferOut;
public Form1()
{
InitializeComponent();
}
private void AccesoForm(String accion)
{
//----------------------------------Aqui llegan los datos
strBufferIn = accion;
TxtDatosRecibidos.Text = strBufferIn;
string input = TxtDatosRecibidos.Text;
string[] sp;
sp = input.Split(',');
textBox1.Text = sp[0];
textBox2.Text = sp[1];
textBox3.Text = sp[2];
textBox4.Text = sp[3];
textBox5.Text = sp[4];
textBox6.Text = sp[5];
textBox7.Text = sp[6];
textBox8.Text = sp[7];
Ошибка, которая ты estГЎ давая значит, что ты пробуешь получить информацию о положении одного array[]
, в котором не существуют данные, а именно, если мы предполагаем, что у твоего array есть 6 положений с данными (с 0 до 5) и ты пробуешь получать dstos ее posiciГіn 6 дает тебе ошибку IndexOutOfRangeException
, потому что ты прошел ранга array.
В cГіdigo, который estГЎs, используя deberГ-туз подтверждать, перед тем, как распределять данные TextBox
, что то, что ты попробуешь вводить в них, существует, например Г©sta он формирует:
sp = input.Split(',');
if (sp.Length > 0)
textBox1.Text = sp[0];
if (sp.Length > 1)
textBox2.Text = sp[1];
if (sp.Length > 2)
textBox3.Text = sp[2];