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

C# Discussion :

lecture port série [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2011
    Messages : 35
    Par défaut lecture port série
    Bonjour, j'essaie actuellement de récupérer des données via un port série. En fouillant sur le forum j'ai réussi à faire un code qui me permet de récupérer les données. Les données proviennent d'une sonde de température et sont envoyées vers le port série via un microcontroleur. J'essaie de réaliser une petite interface qui permet de visualiser la température en temps réel. Le problème est qu'au moment de l'affichage dans la textbox, les données s'écrive les unes à la suite des autres. Sauriez-vous m'aider à finir ce projet relativement simple?

    Voici mon code

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO.Ports;
     
    namespace SerialComm
    {
        public partial class Form1 : Form
        {
            static SerialPort serialPort1;
            string RxString;
            public Form1()
            {
                serialPort1 = new SerialPort("COM4", 9600, Parity.None, 8, StopBits.One);
                InitializeComponent();
                serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
                serialPort1.ReadTimeout = 500;
     
            }
            private void Form1_Load(object sender, EventArgs e)
            {
     
            }
            private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
            {
                RxString = serialPort1.ReadExisting();
                this.Invoke(new EventHandler(AfficherTextASync));
            }
     
            private void AfficherTextASync(object sender, EventArgs e)
            {
     
                textBox1.AppendText(RxString);
                label1.Text = RxString;
     
     
            }
            //private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
            //{
            //    string value = "";
            //    while (serialPort1.BytesToRead > 0)
            //    {
            //        char[] buffer = new char[255];
            //        int bytes_read = serialPort1.Read(buffer, 0, buffer.Length);
            //      //  string texte = serialPort1.ReadLine();
     
            //        for (int i = 0; i < bytes_read; i++)
            //        {
            //            value += buffer[i];
            //        }
            //    }
            //    safeInput(value.ToString());
            //}
     
            //private void safeInput(string msg)
            //{
            //    textBox1.Invoke(new EventHandler(delegate
            //    {
            //        textBox1.SelectedText = string.Empty;
            //        textBox1.AppendText(msg.ToString());
            //        textBox1.ScrollToCaret();
     
     
            //    }));
            //}
     
            private void button1_Click(object sender, EventArgs e)
            {
                serialPort1.Open();
            }
     
     
        }
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pourquoi ne pas mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textBox1.Text=RxString;
    car justemment la méthode AppendText est équivalent à de la concaténation.

    Bien à vous,

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    textBox1.AppendText(RxString); fait que tu as ce comportement.

    Utilises plutôt textBox1.Text = RxString;


    [EDIT] grillé

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2011
    Messages : 35
    Par défaut
    J'ai testé en changeant .appendtext en .text. Le soucis est que les données ne sont plus affichée correctement alors qu'avec le appendtext l'affichage était correct. Une idée de ce qui peut provoquer ca?

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Essaye avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textBox1.Text+=RxString;
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  6. #6
    Invité
    Invité(e)
    Par défaut
    Et quel est l'affichage correct de tes données ?

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2011
    Messages : 35
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textBox1.Text+=RxString;
    Cela a le même effet que appendtext. Le problème ne viendrait-il pas de la réception? Les données étant envoyée en continu ne faudrait-il pas découper les données reçues? Je précise je reçois directement une chaine de caractère

  8. #8
    Membre émérite

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Par défaut
    Si tu ne nous donne pas plus d'infos sur ce que tu reçois, comment et comment tu veux que ça apparaisse, ça va vraiment être compliqué pour nous de t'aider
    Mon blog sur les technos .NET et Agile -> http://blog.developpez.com/maximepalmisano/

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2011
    Messages : 35
    Par défaut
    La valeur est envoyée sous forme de caractère. Exemple: 25.0000. Lorsque j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textBox1.Text=RxString;
    seul 0 s'affiche. Lorsque j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textBox1.Text+=RxString;
    cela donne 25.000025.000025.0000. et ainsi de suite pour les valeurs suivante. Je veux simplement afficher une valeur à la fois. Est-il possible qu'au moment de la réception les valeurs s'écrive à la suite dans rxstring?

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Qu'est-ce que tu entends par "plus affichée correctement" ?

    En fait comment veux tu voir ta température s'afficher ?
    Avec la propriété Text, dès qu'une température est lue, elle vient remplacer la valeur de la TextBox.

    Si tu veux garder dans ta TextBox les anciennes valeurs et que tu veux tracer ligne par ligne les températures, il faut autoriser le mode multiligne (Multiline) et penser à faire un saut de ligne :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
            this.TboxLog.AppendText("\n" + "test");

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lecture port série
    Par mickael.be dans le forum Composants VCL
    Réponses: 2
    Dernier message: 19/07/2008, 09h49
  2. lecture port série
    Par biscot19 dans le forum C
    Réponses: 6
    Dernier message: 13/07/2007, 08h54
  3. lecture port série
    Par alex2395 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/03/2007, 15h59
  4. [API Win32 sans MFC] Lecture port série: thread bloqué
    Par dacid dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 24/05/2006, 13h34
  5. Pb de lecture port série
    Par amalis dans le forum Bibliothèques tierces
    Réponses: 1
    Dernier message: 18/03/2006, 16h21

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