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 rs232 problème


Sujet :

C#

  1. #21
    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 une question
    je voudrais savoir comment récupérer les données que je rentre dans un textbox.
    donc dans mon interface j'ai un bouton envoyer qui va récupère des données d'une textBox(ces des données que j'ai télécharger de mon pc) puis les envoyer via le port série.
    j'ai fait ce bout de code mais quand je click sur le bouton envoyer il bloque tout l'interface je peux plus cliqué sur d'autre bouton.
    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
     
     private void button_envoyer_Click(object sender, EventArgs e)
            {
     
                StatusLabel1.Text = "Appuyez sur 'F6' de la commande numérique puis patientez...";
               // backgroundWorker1.RunWorkerAsync();// executer le Background worker doWork()
             serialPort1.Write("\u000A"); // lance la tache receveFil chr13
     
    // récupéré le signal d'entre pour effectue l'envoi
               while (!ison)
             {
                 Thread.Sleep(500);
             }
     
              StreamReader sr = new StreamReader(openFileDialog1.OpenFile(), Encoding.Default); 
     
                try
                {
                    string data = sr.ReadLine();
     
                    while (data != null)
                    {
                        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)
     
     
                        serialPort1.Write(bBufferBytes, 0, bBufferBytes.Length); // Ecrit le buffer complet sur le SerialPort                   
                        data = sr.ReadLine();
     
     
                           // progressBar2.PerformStep();
                           StatusLabel1.Text = bBufferBytes.Length.ToString() + "%" + "Télechargement en court...";
                           StatusLabel1.Text = "Transfert en cours...";
     
                         }
                     } 
     
                finally
                {
                    if (sr != null)
                        sr.Close();
                    StatusLabel1.Text = "Transfert Fini ";
                } 
            }
    Nom : box.PNG
Affichages : 96
Taille : 2,5 Ko

  2. #22
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    Bonjour

    1 - lire un bouquin sur la programmation en C#

    2 - Ne pas mettre le code d'écriture sur le port série dans le clique d'un bouton mais faire une fonction genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SendDataToSerialPort(byte[] data)
    {
       // ton code d'envoi des données...
    }
    Pour lire les données d'une textbox (d'où le besoin de lire un cours - ya des tutos ici très bien fait) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string myValue = MyTextBox.Text;
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #23
    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 l'aide.
    je fait de mon mieux pour avancer dans mon projet que je traite de puis un mois (je lit des cours, je cherche sur google) mais comme je suis débutant j'ai du mal à comprendre et avance.
    j'ai essayé de de modifier le code mais j'envoie pas mes 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 button_envoyer_Click(object sender, EventArgs e)
            {
     
                StatusLabel1.Text = "Appuyez sur 'F6' de la commande numérique puis patientez...";
                serialPort1.Write("\u000A"); // lance la tache receveFil chr13
             }
     private void SendDataToSerialPort(byte[] data)
           {
               while (!ison)
               {
                   Thread.Sleep(500);
               }
     
     
                try
                {
                    string myValue = textBox1.Text;
     
                    while (myValue != null)
                    {
                        bBufferBytes = System.Text.Encoding.ASCII.GetBytes(myValue); //Place le contenu dans un buffer d'octets (ASCII: 1 char = 1 octet) (UNICODE: 1 Char = 2 octets)
     
                        serialPort1.Write(bBufferBytes, 0, bBufferBytes.Length); // Ecrit le buffer complet sur le SerialPort                   
     
                           StatusLabel1.Text = "Transfert en cours...";
     
                         }
                     } 
     
                finally
                {
                    if (data != null)
                        //data.Close();
                    StatusLabel1.Text = "Transfert Fini ";
                } 
           }

  4. #24
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    ton while(!ison)

    es tu sur d'en sortir ?

    et dans mon idée, ton histoire pour l'envoie en textbox, c'était plutot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    private void button_envoyer_Click(object sender, EventArgs e)
            {
     
                StatusLabel1.Text = "Appuyez sur 'F6' de la commande numérique puis patientez...";
                serialPort1.Write("\u000A"); // lance la tache receveFil chr13
                if(myTextBox.Text.Length > 0)
                SendDataToSerialPort(System.Text.Encoding.ASCII.GetBytes(myTextBox.Text));
     
             }
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  5. #25
    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
    le while ((!ison)) c'est pour synchroniser mon envoie de données entre mon pc et la commande d'axe car au début je lui envoie cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     serialPort1.Write("\u000A");
    pour dire que j'attend ton accord pour la réception des données.

    j'ai une erreur :
    The name 'SendDataToserialPort' does not exist in the current context .

  6. #26
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    Je ne peux pas t'apprendre les bases de la programmation Objet et du C# à distance comme ça...

    Désolé, je jette l'éponge pour ce sujet !!!
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  7. #27
    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 réussi a récupéré les données dans la textBox et les envoyer via le port série.
    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
     
     private void button_envoyer_Click(object sender, EventArgs e)
            { toolStripStatusLabel1.Text = "Appuyez sur 'F6' de la commande numérique puis patientez...";
     
                serialPort1.Write("\u000A"); // lance la tache receveFil chr10
                while (!ison) { }
     
                     string  myValue = textBox1.Text;
     
                     if (myValue.Length > 0)
                     {
                        byte[] don = System.Text.Encoding.ASCII.GetBytes(myValue);
                        serialPort1.Write(don, 0, don.Length);
                      }
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Problème Communication RS232
    Par THIB46 dans le forum VC++ .NET
    Réponses: 11
    Dernier message: 17/04/2015, 15h16
  2. Problème communication RS232
    Par Ludo29 dans le forum C++
    Réponses: 1
    Dernier message: 02/04/2010, 20h01
  3. Communication RS232
    Par pedro_59 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 02/08/2007, 11h25
  4. [communication série] problème lecture/écriture
    Par davinout dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 01/06/2005, 13h14
  5. Communication RS232 avec un PIC via delphi
    Par JeanPh dans le forum API, COM et SDKs
    Réponses: 22
    Dernier message: 09/08/2004, 22h56

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