Bonjour,

voila je reçoit des données au format ASCII par le port série et j’effectue un traitement sur ses données avec la fonction declenchement_dispositif tout fonctionne bien la plupart du temps, mais quelque fois j'obtient une exceptions au déclenchement de la fonction, j'ai écrit celle ci dans un fichier texte et voila l'exception :

13/06/2015 10:22:42 fonction declenchement_dispositif :: System.ArgumentOutOfRangeException: L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
Nom du paramètre*: startIndex
à System.Globalization.CompareInfo.IndexOf(String source, String value, Int32 startIndex, Int32 count, CompareOptions options)
à System.Globalization.CompareInfo.IndexOf(String source, String value, Int32 startIndex)
à System.String.IndexOf(String value, Int32 startIndex)
à start_delta_web.Test_RS232.declenchement_dispositif() dans C:\Users\PNPN\Documents\Visual Studio 2005\Projects\start_delta_web\RS232.vb:ligne 249


J'ai donc localisé la ligne 249 dans RS232.vb ou ce trouve le code posant problème (il est extrait de ma fonction declenchement_dispositif et extrait des données spécifiques reçu par le port série et placé dans la textbox1 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
246             For Each ligne As String In TextBox1.Text.Split(ControlChars.NewLine) 'pour chaque ligne de la textbox je sépare les caractéres
247                    'ville 
248                    Dim debut_ville As Integer = TextBox1.Text.IndexOf("Commune : ") + 10 'entier qui repére le nom commune et ajoute 10 
249                    Dim fin_ville As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_ville) 'entier qui repére la fin de la ligne
250                    Dim longeur_ville As Integer = fin_ville - debut_ville 'soustrait la fin du début de la valeur de commune
251                    commune_op = TextBox1.Text.Substring(debut_ville, longeur_ville)
252                    'adresse
253                    Dim debut_adresse As Integer = TextBox1.Text.IndexOf("Adresse : ") + 10
254                    Dim fin_adresse As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_adresse)
255                   Dim longeur_adresse As Integer = fin_adresse - debut_adresse
256                    adresse_op = TextBox1.Text.Substring(debut_adresse, longeur_adresse)
257                    'commande
258                    Dim debut_commande As Integer = TextBox1.Text.IndexOf("Commande : ") + 11
259                    Dim fin_commande As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_commande)
260                    Dim longeur_commande As Integer = fin_commande - debut_commande
261                    commande_op = TextBox1.Text.Substring(debut_commande, longeur_commande)
262              Next
En fait cette partie de code me permet de récupérer le texte qui se situe après chaque libellé et avant la fin de ligne (commune, adresse, commande) et ainsi les stocker dans des variables appropriés.

Mais je ne comprend pas l'exception levé 'L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.' car je ne possède pas de collection a ligne 249 !!!
Auriez vous une idée du problème rencontré ?

d'avance je vous remercie