IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Reception de données + Attente avec une Liaison Série (VSB2010)


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Reception de données + Attente avec une Liaison Série (VSB2010)
    Bonjour tout le monde,

    Je suis actuellement en stage de fin d'études et je viens tout juste de débuter dans la programmation en Visual Basic.
    Pour réaliser mon projet, je dois récupérer via une liaison série des données venant d'un microcontrôleur (déjà programmé et fonctionnant comme il doit).

    Pour récupérer les données j'ai suivi ce tutoriel
    et j'arrive très bien à voir les données envoyées dans la fenêtre de dialogue (RichTextBox du bas).

    Pour m'adapter à ma situation, je voudrais sous VSB2010 faire un bouton, et dès son appuie, le programme se mets en attente pendant quelques secondes (le temps que le µc envoie tout en plus d'une manipulation matérielle). En cas d'echec ou de timeout --> erreur.

    Pour m'aider sur cette partie d'attente, je me suis servie d'un exemple trouvé sur le site de microsoft que j'ai mis dans mon sub button_click.

    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
    19
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     Dim returnStr As String = ""
            Try
                Do
                    Dim Incoming As String = SerialPort1.ReadLine()
                    If Incoming Is Nothing Then
                        Exit Do
                    Else
                        returnStr &= Incoming & vbCrLf
                    End If
                Loop
            Catch ex As TimeoutException
                returnStr = "Error: Serial Port read timed out."
            Finally
                If SerialPort1 IsNot Nothing Then SerialPort1.Close()
            End Try
     
            MsgBox(returnStr, MsgBoxStyle.Information)
    End Sub
    Le Timeout fonctionne bien, toutefois l'affichage des données dans la messagebox ne fonctionne pas. Soit l'appli crashe, soit erreur de Timeout alors que les données sont bien envoyées et les config du port sont toutes bien faites.
    J'ai essayé de passer par des boucles while ou if do, mais à chaque fois je tombé dans des boucles infinies et impossible d'en sortir.

    J'espère avoir été clair, si quelqu'un peut gentiment m'aider ça serait vraiment au top.

    Bonne soirée et bon weekend si vous avez les 4 jours

  2. #2
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Points : 279
    Points
    279
    Par défaut
    Utilisé le datareceived de serialport pour lire tes donnée.
    Regarde la doc
    https://msdn.microsoft.com/fr-fr/lib...areceived.aspx

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci bien pour le lien de la doc. Cela va bien m'aider.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Rebonjour,

    Alors l'exemple de la doc fonctionne très bien. Toutefois à chaque donnée transmise, j'ai l'impression qu'il y a un problème de taille de buffer. La console n'affiche jamais la donnée en entière mais qu'une seule partie avant de passer à la suite.

    Voilà ce que j'obtiens
    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
     
    Data Received:
    19.3
    Data Received:
    8081
    Data Received:
    1
    Data Received:
    9.380
    Data Received:
    81
    Data Received:
    19.1
    Data Received:
    38083
    Alors que je devrais avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Data Received:
    19.38081
    Data Received:
    19.38081
    Data Received:
    19.13808
    J'ai beau essayer de mettre des tempo entre chaque acquisitions, augmenter la taille des buffers mais rien ne change.
    De plus, à chaque fois que je lance l'application, la position de la troncature varie d'une à deux cases.

    Avez-vous une idée d'où cela pourrait venir ?

    Cordialement,

    Loïc

  5. #5
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Points : 279
    Points
    279
    Par défaut
    Je te conseillerais de vérifier si tu a défini correctement les paramètres de communication comme le BaudRate ou les bits de parité Parity et de stop StopBits au pire si tu ne sait pas lesquels utilisé car non fourni sur la doc de ton périphérique tu essaye un peu tous (4800, 9600, 19200)

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    La configuration est bonne, maisj'ai réussi à résoudre le problème en remplaçant le ReadExisting par un Readline, j'ai un peu modifié le programme du µc pour qu'il génère des "\n" après chaque envoie de mesures et maintenant tout marche. Merci encore

Discussions similaires

  1. [XL-2013] Distribuer un fichier excel avec une liaison de donnée
    Par Theka dans le forum Conception
    Réponses: 1
    Dernier message: 16/05/2015, 08h00
  2. Problème avec une liaison série
    Par Coco47 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/08/2009, 15h13
  3. Réponses: 4
    Dernier message: 20/04/2009, 19h49
  4. Comment capturer les données sur une liaison série RS232
    Par jef Orome dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 02/04/2007, 18h14
  5. Réponses: 4
    Dernier message: 30/03/2007, 16h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo