Subtring : StartIndex trop grand?!
Bonjour à tous!
Je tente une communication, en port série, avec une carte : je n'envoie mes données que si la carte me donne la bonne réponse.
Pour lire les données sur le port, j'utilise le thread suivant :
Code:
1 2 3 4 5 6 7 8 9 10
| Public Shared Sub Read()
While True
Try
While (True)
duff = duff & CStr(SPort1.ReadExisting)
End While
Catch generatedExceptionName As TimeoutException
End Try
End While
End Sub |
Et voilà le code qui pose problème :
Code:
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
| 'Compteur des 12 CX
For cmpt1 = 0 To 12
'Compteur des secteurs
For cmpt2 = 0 To 15
'Erase sauf si on est dans la "zone interdite" (0x00C0F000 -> 0x00C0FFFF)
If (cmpt1 = 0 And cmpt2 = 15) Then
Else
ValStr = "Hey"
'Ecriture sur le port
WriteRS232("9F", 1)
'Attente de "0xAA" pour la suite / L'erreur est ici, au bout de la troisième boucle
While (duff.Substring(CInt(duff.Length - 1), 1) <> AAStr)
End While
'00 00 E0
WriteRS232("0000E0", 3)
hbwait(30)
'Adresse
WriteRS232(ValStr, CInt(ValStr.Length / 2))
'Attente de "0xEA" pour continuer
While (duff.Substring(CInt(duff.Length - 1), 1) <> "ê")
End While
'Attente de "0xEA" pour continuer
While (duff.Substring(CInt(duff.Length - 1), 1) <> "ê")
End While
End If
Next
Next |
Le code marche plutôt bien... les deux premières fois. J'ai ensuite un code erreur :
"Une exception non gérée du type 'System.ArgumentOutOfRangeException' s'est produite dans mscorlib.dll
Informations supplémentaires : startIndex ne peut pas être supérieur à la longueur de la chaîne."
Or, lorsque je mets un espion sur duff.length et duff.length-1, mon StartIndex est bien inférieur à la longueur de la chaîne!
Alors qu'est-ce qui peut provoquer cette erreur? :roll:
Une seconde question : est-il possible, et plus propre, de supprimer le contenu de duff avant chaque lecture?
Je vous remercie d'avance de votre aide!