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 :

communication 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 communication port série
    bonjour,
    voila de puis un mois que j'essaye de faire une interface de communication pour envoyer et recevoir des données via le ports série mais j'arrive pas a faire quelle que chose.
    -lire les données sur le port série.
    -pour envoyer les données je doit télécharger le fichier de mon pc puis les stock dans un buffer un tableau, les afficher sur textbox et les envoyer sur le port.
    pour le moment j'ai réalisé l'interface et réussi a télécharger le fichier de mon pc, mais pour l'envoyer et recevoir je n'arrive pas
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO.Ports;
    using System.IO;
     
    namespace Communicatio_1
    {
        public partial class Form1 : Form
     public byte[] bBufferBytes; //buffer a envoyer
     
        {
            public Form1()
            {
                InitializeComponent();
            }
     
     
            private void Form1_Load(object sender, EventArgs e) //l'événement Form_Load nous lire tous les ports série disponibles et nous assigner les valeurs à la liste déroulante.
            {
                //on commence par lister les voies séries présentes
                String[] ports = SerialPort.GetPortNames(); //fonction statique
                //string [] ports = System.IO.Ports.SerialPort.GetPortNames ();
                for (int i = 0; i < ports.Length; i++) //on ajoute les ports au combo box
                {
                    portBox.Items.Add(ports[i]);
                }
     
            }
     
     
            private void button_charger_Click(object sender, EventArgs e)
            {
                openFileDialog1.Title = "Chargement";// Titre
                openFileDialog1.FilterIndex = 1;
     
                if (openFileDialog1.ShowDialog(this) == DialogResult.OK) // Ouverture boite de dialogue OpenFile
                {
                    textBox1.Text = string.Empty; // On vide le TextBox
                    StreamReader sr = new StreamReader(openFileDialog1.OpenFile(), Encoding.Default); // Ouverture du fichier sélectionné
                    // son nom est dans openFileDialog1.FileName
                   try
                    {
                        string data = sr.ReadLine();
                        bBufferBytes = System.Text.Encoding.ASCII.GetBytes(data); //Place le contenu dans un buffer d'octets (ASCII: 1 char = 1 octet) (UNICODE: 1 Char = 2 octets)
                        while (data != null)
                        {
                            textBox1.AppendText(data + "\r\n");
                            data = sr.ReadLine();
                            serialPort1.Write(bBufferBytes, 0, bBufferBytes.Length); // Ecrit le buffer complet sur le SerialPort
                        }
                    }
                    finally
                    {
                        if (sr != null)
                            sr.Close();
                    }
                }
            }
            private void button_connecter_Click(object sender, EventArgs e)
            {
                serialPort1.PortName = portBox.SelectedItem.ToString();
                serialPort1.BaudRate = 9600;
                serialPort1.Parity = Parity.None;
                serialPort1.StopBits = StopBits.One;
                serialPort1.DataBits = 8;
                serialPort1.Handshake = Handshake.None;
                serialPort1.PortName = portBox.Text;
                // serialPort1.Open();
               // serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
                try
                {
                    serialPort1.Open();  //Ouvrez le SerialPort
                    statusStrip1.Text = "Port : " + portBox.Text + " Opened"; //Mettre à jour le StatusStrip
                    //label11.Text = "Port " + comboBox1.Text + " Fermé";
                    MessageBox.Show("Opened");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Failed: " + ex.Message);
                }
     
                button_connecter.Enabled = false;
                button_deconnecter.Enabled = true;
                textBox1.ReadOnly = false;
                radioButton.Enabled = true;
                radioButton.BackColor = Color.Black;
     
            }
     
            private void button_deconnecter_Click(object sender, EventArgs e)
            {
                try
                {
                    serialPort1.Close();  //fermer le SerialPort
                    //statusStrip1.Text = "SerialPort : " + portBox.Text + " Opened"; //Mettre à jour le StatusStrip
                    MessageBox.Show("Closed");
     
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Failed: " + ex.Message);
                }
     
                button_connecter.Enabled = true; // activer le button connecter
                button_deconnecter.Enabled = false;// desctiver le bitton deconnecter
                textBox1.ReadOnly = true;
            }
     
            private void button_recevoir_Click(object sender, EventArgs e)
            {
     
            }
     
     
            private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                 SerialPort sp = (SerialPort)sender;
                string msg = sp.ReadLine();
                this.Invoke(new EventHandler(delegate
                    {
                        textBox2.AppendText(msg + "\n");
                        textBox2.ScrollToCaret();
                    }));
     
            }
     
     
            private void checkPortDataTimer_Tick(object sender, EventArgs e)
            {
                //You may want to check available bytes instead of this.
                string recievedData = serialPort1.ReadExisting();
                if (!string.IsNullOrEmpty(recievedData))
                    textBox2.Text += recievedData;
            }
     
            private void button_envoyer_Click(object sender, EventArgs e)
            {
     
            }
        }
     
    }
    je travaille avec des button.
    j'utilise ce port série pour relier mon pc et un ma commande d'axe MCS 32EX SERAD, avec mon programme j'arrive a me connecter, mais les led TX RX ne s'allume pas quand j'essaye d'envoyer faut-il les configurer dans le programme ???

    Nom : Capture.PNG
Affichages : 528
Taille : 108,7 Ko


    pouvez-vous m'aider

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 72
    Points : 107
    Points
    107
    Par défaut
    Bonjour,
    Première chose vérifier que les drivers de ton module USB soient bien installés
    et sans oublier de vérifier le bon câblage de tes prises.
    Je te conseil d'utiliser dans un premier temps hyper terminal pour déboguer ton matériel avant de passer au code.

    ta réception sera Ok avec ce code (Je l'ai testé).
    Sache que la mise en œuvre d'une rs232 reste toujours délicate.

    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
     
     
    private void button_connecter_Click(object sender, EventArgs e)
            {
    //  ne pas oublié ceci enlever ton commentaire sur
     
                serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
     
     
            }
     
     
    private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
                 //SerialPort sp = (SerialPort)sender; pas bon
                string msg = serialPort1.ReadExisting();
                   // Ou ceci
                string msg = serialPort1.ReadLine(); // Attention à ton caractère de fin de ligne  serialPort1.NewLine
                textBox1.Invoke(new Action(() => textBox1.Text = msg));
     
            /*    this.Invoke(new EventHandler(delegate
                    {
                        textBox2.AppendText(msg + "\n");
                        textBox2.ScrollToCaret();
                    }));*/
     
            }
     
            private void button_envoyer_Click(object sender, EventArgs e)
            {
                serialPort1.WriteLine("toto");
            }

    Bon courage !

  3. #3
    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,
    merci pour votre réponse.
    ce qui concerne les drivers de mon module USB ils sont bien installés.
    pour le code j'ai essaye il se passe rien.
    voila l'interface que j'ai réaliser:
    Nom : Capture.PNG
Affichages : 517
Taille : 10,8 Ko

Discussions similaires

  1. Communication port série (RS232) avec VC++
    Par sanatou dans le forum Visual C++
    Réponses: 2
    Dernier message: 30/10/2006, 13h49
  2. Communication Port Série Internet
    Par psyckey dans le forum Hardware
    Réponses: 3
    Dernier message: 29/09/2006, 19h37
  3. [VB6] Probleme communication Port série
    Par Renard-fou dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 15/05/2006, 00h01
  4. Communication port série W2000/W98
    Par Fabsou dans le forum MFC
    Réponses: 4
    Dernier message: 24/10/2005, 19h57
  5. probleme de communication port série
    Par ben23 dans le forum MFC
    Réponses: 8
    Dernier message: 06/02/2004, 15h12

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