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

Windows Forms Discussion :

Probleme de reception des données sur le port série


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 45
    Par défaut Probleme de reception des données sur le port série
    Bonsoir,

    J'ai quelques soucis pour traiter des données issue du port série ??
    J'ai crée une Window-Form en Visual C# qui communique avec une carte arduino,
    laquelle envoie une chaine de caractère contenant des données ( c1=255;c2=128;c3=45;c4=2) que je dois récupérer dans differents textbox,
    il s'agit donc de séparer la chaine de caractère pour récupérer 4 valeur entières différentes .

    La communication s'effectue bien je récupérè la chaine entière, mais pas les valeurs, j'utilise un "substring" pour séparer, mais ça ne marche pas,
    cela affiche la même chose sur les textbox ??

    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
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
     
    namespace SimpleSerial
    {
        public partial class Form1 : Form
        {
            // Add this variable 
                string RxString;
     
            public Form1()
                {
                InitializeComponent();
                }
     
            private void buttonStart_Click(object sender, EventArgs e)
                {
                Arduino_com.PortName = "COM10";
                Arduino_com.BaudRate = 115200;
                Arduino_com.Open();
                }
     
            private void buttonStop_Click(object sender, EventArgs e)
                {
                   if (Arduino_com.IsOpen)
                      {
                      Arduino_com.Close();
                      }
                }
     
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
                 {
                  if (Arduino_com.IsOpen) Arduino_com.Close();
                 }
     
     
     
            private void DisplayText(object sender, EventArgs e)
                  {
                    //inintialisation de l'affichage    
                        textBox1.Text = RxString;
                         textBox2.Text = RxString.Substring(3);
            }
     
            private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
                 {
                 RxString = Arduino_com.ReadExisting();
                    this.Invoke(new EventHandler(DisplayText));
                  }
        }
    }
    J'ai vraiment besoin de votre aide.

    Merci

    NOSTRA

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    utilise split plutot
    et ton problème n'a rien à voir avec le port série si tu recois bien tout mais que tu n'arrives pas à découper
    c'est juste un problème de découpage de string ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 45
    Par défaut Merci
    bonjour,

    Merci pour ton aide, oui tu as raison j'ai un problème de découpe des strings ??
    J'ai essaye avec Split, en utilisant le '=' comme séparateur, mais ça ne marche pas ??
    Mai j'ai une erreur de type , j'ai essaye de le déclarer en tableau de string , ça ne marche Pas ??

    merci pour votre aide ???

    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
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
     
    namespace SimpleSerial
    {
        public partial class Form1 : Form
        {
            // Add this variable 
                string RxString;
     
            public Form1()
                {
                InitializeComponent();
                }
     
            private void buttonStart_Click(object sender, EventArgs e)
                {
                Arduino_com.PortName = "COM10";
                Arduino_com.BaudRate = 115200;
                Arduino_com.Open();
                }
     
            private void buttonStop_Click(object sender, EventArgs e)
                {
                   if (Arduino_com.IsOpen)
                      {
                      Arduino_com.Close();
                      }
                }
     
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
                 {
                  if (Arduino_com.IsOpen) Arduino_com.Close();
                 }
     
     
     
            private void DisplayText(object sender, EventArgs e)
            {
                //inintialisation de l'affichage    
                textBox1.Text = RxString;
     
                textBox3.Text = RxString.Split('=');
     
     
            }
            private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
                   {
                    RxString = Arduino_com.ReadExisting();
                    this.Invoke(new EventHandler(DisplayText));
                   }
        }
    }

    Nom : ERREUR_VISUAL_C#.jpg
Affichages : 298
Taille : 10,4 Ko

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textBox3.Text = RxString.Split('=');
    .Text est de type string
    Split retourne un tableau de string (soit string[])
    et on ne peut pas mettre un tableau de string dans un string (c'est ce que te dis le message d'erreur)

    soit tu veux tout mettre et alors tu ne fais pas de split
    soit tu veux spliter et alors tu réfléchis à comment tu affiches chaque morceau
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 45
    Par défaut
    Salut,

    Le but est de retrouve la valeur pour les 4 canaux, donc je veux récupérer ce qui se trouve derrière le signe '='
    et ensuite le convertir en entier pour traiter ces données .

    je vais essayer de définir un tableau de string pour tester cela.

    A +

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    si en entrée tu as
    c1=255;c2=128;c3=45;c4=2

    alors
    split("=")
    va donner le tableau de string suivant :
    c1
    255;c2
    128;c3
    45;c4
    2

    ce qui n'est pas forcément ce que tu veux je pense
    par contre un split(';') donnera
    c1=255
    c2=128
    c3=45
    c4=2

    pour accéder à une valeur d'un tableau il faut choisir l'index
    split(';')[0] sera égal à c1=255 par exemple

    après il y a de forte chance que split(';','=') retourne
    c1
    255
    c2
    128
    c3
    45
    c4
    2

    auquel cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string[] stab = split(';','=');
    stab[0] + " " + stab[1]
    vaudra "c1 255"

    enfin j'espère que maintenant tu vois le principe ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. [Débutant] simplfier ma reception de donné sur le port série
    Par gastoncs dans le forum VB.NET
    Réponses: 0
    Dernier message: 13/01/2012, 23h44
  2. Envoyer des données sur le port série
    Par jbidou88 dans le forum Flash
    Réponses: 3
    Dernier message: 18/09/2006, 11h33
  3. [javax.comm] Envoyer des données sur le Port série
    Par deuspi dans le forum Applets
    Réponses: 2
    Dernier message: 29/08/2006, 09h40

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