oui, j'attend 2 secondes
mais ça bug toujours lors de la 2 ème série de byte reçu (5ème à 8 ème byte)
je rempli le buffer,
j'affiche, je vide
et voici l'erreur :
L'index et la longueur doivent faire référence à un emplacement situé dans la chaîne.
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string value = "";
while (serialPort1.BytesToRead > 0)
{
char[] buffer = new char[255];
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
{
////textBox1.SelectedText = string.Empty;
//this.textBox1.Text = "";
////textBox1.AppendText(String.Format(msg));
//textBox1.Text = msg[0].ToString();
////textBox2.SelectedText = string.Empty;
//this.textBox2.Text = "";
//textBox2.AppendText(msg.ToString());
////textBox2.Text = msg[1].ToString();
////textBox3.SelectedText = string.Empty;
//this.textBox3.Text = "";
//textBox3.AppendText(msg.ToString());
////textBox3.Text = msg[2].ToString();
////textBox4.SelectedText = string.Empty;
//this.textBox4.Text = "";
////textBox4.AppendText(msg.ToString());
//textBox4.Text = msg[3].ToString();
// on efface les textboxs
textBox1.SelectedText = string.Empty;
this.textBox1.Text = "";
textBox2.SelectedText = string.Empty;
this.textBox2.Text = "";
textBox3.SelectedText = string.Empty;
this.textBox3.Text = "";
textBox4.SelectedText = string.Empty;
this.textBox4.Text = "";
// séparation du message en 4 morceaux
string W = msg.Substring(0, 1);
string X = msg.Substring(1, 1);
string Y = msg.Substring(2, 1);
string Z = msg.Substring(3, 1);
// mise des morceaux du message dans un tableau
string[] tableau_valeur = new string[4];
tableau_valeur[0] = W;
tableau_valeur[1] = X;
tableau_valeur[2] = Y;
tableau_valeur[3] = Z;
// mise en textbox approprié des valeur inscrite dans le tableau!
textBox1.Text = tableau_valeur[0];
textBox2.Text = tableau_valeur[1];
textBox3.Text = tableau_valeur[2];
textBox4.Text = tableau_valeur[3];
serialPort1.DiscardInBuffer();
}));
} |
je ne comprend pas où se trouve l'erreur...
lorsque le programme s'arrête il y a une fleche verte (dans le programme) devant cette ligne (programme counter?)
textBox1.Invoke(new EventHandler(delegate
on va y arriver...je suis persuadé...
Partager