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 :

DataReceived réception des données port série


Sujet :

C#

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 131
    Points : 46
    Points
    46
    Par défaut DataReceived réception des données port série
    Bonjour;

    mon projet consiste à réaliser une interface de communication envoi et réception des données entre mon pc et une commande d'axe via un port série avec C#.

    pour le moment, je travail avec l'hyper terminal pour la communication.

    pour l'envoi des données je dois télécharger un fichier sur mon bureau puis l'envoyer sur le port série, donc ça j'ai réussi à le faire.j'affiche tout les données dans l'hyper terminal.

    mon blockage actuel est le suivant:

    pour la reception des données j'ai mis en oeuvre l’événement Datareceived, quand j'essaye d'envoyer des données de puis l'hyper terminal il m'affiche dans ma textBox2 ça:
    Nom : Capture2.PNG
Affichages : 254
Taille : 7,1 Ko

    si tout ce qu'il s'affiche.

    ps: la textBox2 si la ou je veux afficher les données en reception.

    voila 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
     
    private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
               switch (e.EventType)
                {
                    case SerialData.Chars:
                        {
                            if (!serialPort1.IsOpen) return; // Si le port est ouvert, le fermer
                            int bytes = serialPort1.BytesToRead;// Obtenir le nombre d'octets en attente dans le tampon du port
                            byte[] buffer = new byte[bytes]; // Créez une zone tampon (tableau d'octets) pour stocker les données entrantes
                            serialPort1.Read(buffer, 0, bytes); // Lire les données du port et de le stocker dans la mémoire tampon
                           // timer1.Start();
                          string s = Reverse(ByteArrayToHexString(buffer)).Substring(0, 1);
     
                             MethodInvoker method = delegate
                             {
                                 textBox2.Text = string.Empty; // On vide le TextBox
                                textBox2.Text=(buffer + "\r\n");
                                 //textBox2.AppendText(bytes + "\r\n");
                             };
                            if (InvokeRequired)
                                BeginInvoke(method);
                            else
                                method.Invoke();
                            // MessageBox.Show(s);
                            break;
                        }
                    case SerialData.Eof:
                        {
                            serialPort1.Close();
                            break;
                        }
     
                } 
            }
     
     
     
            //Convertit un tableau d'octets en une chaîne formatée de chiffres hexadécimaux.
            private string ByteArrayToHexString(byte[] data)
            {
                StringBuilder sb = new StringBuilder();
                foreach (byte b in data)
                    sb.Append(Convert.ToString(b, 16).PadLeft(2, '0').PadRight(3, ' '));
     
                return sb.ToString().ToUpper();
            }
     
            static public string ReverseString(string str)
            {
                char[] charArray = str.ToCharArray();
                Array.Reverse(charArray);
                return new string(charArray);
            }
     
            public static string Reverse(string text)
            {
                string retour = "";
                string[] str = text.Split(' ');
                for (int i = 0; i < str.Length; i++)
                {
                    retour += ReverseString(str[i]);
                    retour += " ";
                }
                return retour;
            }
    pouvez-vous m'aider???

  2. #2
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 131
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    j'ai trouver la solution:
    donc avec ce code j'arrive a recevoir des données.
    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
     
     
     private void serialPort2_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
     
                while (serialPort2.BytesToRead > 0)
                {
     
                        char[] buffer = new char[128]; // on crée un char de 255 caractere            
                     // byte[] buffer =new byte[128];// nouveau
     
     
                      int longueur_bytes_read = serialPort2.Read(buffer, 0, buffer.Length); //lecture du buffer jusqu'a sa longeur buffer.Length               
                      //tes characteres sont contenus dans buffer.
                      //on remplit notre string value byte par byte par notre tableau de charactere buffer, le += fait que l'on écrase pas les données qui sont inserées, mais on les ajoutes.
     
     
                     for (int i = 0; i < longueur_bytes_read; i++)
                     {
                        value +=buffer[i];
     
     
                     }
     
                     StatusLabel1.Text = "Transfert en cours...";
     
                    }
     
        }
     
     
            private void button1_ecrir_Click(object sender, EventArgs e)
            {  
     
                    textBox1.AppendText(value.ToString() + "\r\n");
     
     
            }

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

Discussions similaires

  1. envoi et réception des données via serial port
    Par azert2010 dans le forum C#
    Réponses: 2
    Dernier message: 09/05/2011, 23h53
  2. Réception des données sur un autre serveur
    Par u115rcu dans le forum Langage
    Réponses: 5
    Dernier message: 20/01/2007, 14h20
  3. Réponses: 13
    Dernier message: 24/05/2006, 10h27
  4. Recevoir données port série
    Par Vodkha dans le forum Composants VCL
    Réponses: 3
    Dernier message: 01/09/2005, 11h45
  5. Réception sur le port série sous DOS avec Borland V3.0
    Par jackyjacky dans le forum Autres éditeurs
    Réponses: 24
    Dernier message: 19/03/2004, 23h18

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