Bonjour j'ai aussi ce problème, mais je ne vois pas d'où ça viens.
Le message d'erreur est le suisvant
startIndex ne peut pas être supérieur à la longueur de la chaîne.
Nom du paramètre : startIndex
Mon but est simple : je recois constemment 6 bytes puis 5 secondes puis 6 bytes puis 5 secondes...etc...
Je veux prendre ces 6 bytes et les spliter dans une textbox (pour le moment) et j'ai l'erreur nommée ci-dessus.
Aussi, si ça marche une fois, ça foire la deuxième fois...je ne vois pas pq!
Voici mon code
Code C# :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace SerialComm
{
public partial class Form1 : Form
{
static SerialPort serialPort1;
public Form1()
{
serialPort1 = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
InitializeComponent();
serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
}
private void Form1_Load(object sender, EventArgs e)
{
serialPort1.Open();
}
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string value = "";
serialPort1.DiscardInBuffer();
char[] buffer = new char[6];
while ((serialPort1.BytesToRead > 0) && (serialPort1.BytesToRead < 6))
{
int bytes_read = serialPort1.Read(buffer, 0, buffer.Length);
for (int i = 0; i < bytes_read; i++)
{
value += buffer[i];
}
}
safeInput(value.ToString());
}
private void safeInput(string msg)
{
textBox1.Invoke(new EventHandler(delegate
{
// donnée isolée de la 3 en prenant 1 donnée (1 byte)
string message1 = msg.Substring(0,1);
string message2 = msg.Substring(1,1);
string message3 = msg.Substring(2,1);
string message4 = msg.Substring(3,1);
textBox1.SelectedText = string.Empty;
textBox1.AppendText(message1);
textBox1.ScrollToCaret();
textBox2.SelectedText = string.Empty;
textBox2.AppendText(message2);
textBox2.ScrollToCaret();
textBox3.SelectedText = string.Empty;
textBox3.AppendText(message3);
textBox3.ScrollToCaret();
textBox4.SelectedText = string.Empty;
textBox4.AppendText(message4);
textBox4.ScrollToCaret();
}));
}
}
}
merci de votre aide
