Erreur lors : Réception de données sur VB 2010 (Port série) !

Ihcaamel - 13 oct. 2012 à 14:48
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 14 oct. 2012 à 16:10
Salut tout le monde

voila j'ai une erreur dont je ne sais pas la réponse, je suis débutant en vb et j'utilise VB 2010, donc pour vous éclaircir ce que je fais j'ai essayé d'envoyer des données du PIC vers l'interface VB j'ai réussi à afficher par ex "Hello" mais lorsque j'ai essayé de faire deux zones de textes pour faire la différence entre deux données je trouve une erreur si vous pouvez m'aider à comprendre la faute réside ou ?

voila le code :

Public Class Form1


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.Open()
End Sub


Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
CheckForIllegalCrossThreadCalls = False
Dim data = SerialPort1.ReadExisting
If data.Substring(0, 2) = "tem" Then
TextBox1.Text = data.Substring(3)
End If
If data.Substring(0, 2) = "tee" Then
TextBox2.Text = data.Substring(3)
End If
End Sub
End Class


voila l'erreur que je trouve :

Index and length must refer to a location within the string.
Parameter name: length

10 réponses

je suis désolé je n'ai pas trouvé dans les thèmes VB 2010 pour le choix :(
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
13 oct. 2012 à 15:05
Bonjour,

J'ai déplacé dans la catégorie .NET (VB2010 étant du .NET).

Sinon, sur quelle ligne apparait l'erreur ?
Quelle est la chaine en cours (Shift+F9 pour espionner la valeur) ?
Quelle partie de la chaine cherches-tu ? Tout est bien dans la chaine récupérée ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
Salut NHenry,

c'est au niveau de cette ligne :

If data.Substring(0, 2) "tem" Then


voila le programme sur mikroc pro :

void main ()
{
Uart1_Init (9600);
delay_ms(500);
UART1_Write_Text("tem35");
delay_ms(1000);
UART1_Write_Text("tee50");
delay_ms(1000);
}

donc j’espère afficher dans une zone texte 35 et l'autre 50 c'est pour cela je veux faire la différence par ex par ces deux préfixe (tem,tee) "dans l'intention de réaliser l'affichage de deux grandeurs différentes" mais je ne comprend pas peut être que c'est au niveau du test que j'ai un problème.
0
Utilisateur anonyme
13 oct. 2012 à 19:12
Bonsoir,

Avant de tenter de découper une chaîne de caractères avec substring, on s'assure qu'elle soit non vide et qu'elle ait une longueur suffisante pour le faire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
j'ai oublié, je ne reçoit rien au niveau de l'interface VB
0
Utilisateur anonyme
13 oct. 2012 à 19:42
Il faut ordonner à ton SerialPort de commencer à lire les données avec sa méthode Read.
0
Utilisateur anonyme
13 oct. 2012 à 19:44
Et pour éviter les 'freeze' de ton application (SerialPort est bloquant) inspire toi de cette discussion.
0
Ok je vais essayer
0
Pour les 'freeze' je n'arrive pas à bien comprendre les codes posés dans la discussion :( est ce vraiment c'est compliqué pour séparer les données et les afficher ?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
14 oct. 2012 à 16:10
Bonjour,

Ce n'est pas compliqué, mais cela nécessite parfois de faire un test dans un projet à part.

Il faut essayer, ensuite, viens avec les problèmes rencontrés.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
Rejoignez-nous