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

Signaler
-
Messages postés
14761
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
21 janvier 2021
-
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 :(
Messages postés
14761
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
21 janvier 2021
151
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
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.

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.
j'ai oublié, je ne reçoit rien au niveau de l'interface VB

Il faut ordonner à ton SerialPort de commencer à lire les données avec sa méthode Read.

Et pour éviter les 'freeze' de ton application (SerialPort est bloquant) inspire toi de cette discussion.
Ok je vais essayer
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 ?
Messages postés
14761
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
21 janvier 2021
151
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