progressBar en parallèle avec le transfert des données
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

progressBar en parallèle avec le transfert des données



  1. #1
    tinoch

    progressBar en parallèle avec le transfert des données


    ------

    Bonjour,

    j'ai fait une interface de communication avec C#, et là je veux faire lancer l'avancement avec la progressBar lorsque je click sur le buttons envoyer (qui permet d'envoyé les données via le port série).
    comment appeler la progressBar en parallèle avec la fonction d'envoi?
    j'ai fait ce bout de code mais ça fonctionne pas?

    Code:
    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()
                progressBar2.Visible = true;
                progressBar2.Minimum = 1;
                progressBar2.Maximum = bBufferBytes.Length; // la taille du buffer d'envoi
                progressBar2.Value = 1;
                progressBar2.Step = 1;
     
                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();
     
                      // StatusLabel1.Text = "Transfert en cours...";
     
                    }
                    for (int x = 1; x <= bBufferBytes.Length; x++)
                     {
                         // Copy the file and increment the ProgressBar if successful.
     
                         if (serialPort1.Write((bBufferBytes[x - 1]) == true))
                        {
                             // Perform the increment on the ProgressBar.
                             progressBar2.PerformStep();
                         }
                     }
     
                }
     
                finally
                {
                    if (sr != null)
                        sr.Close();
                    StatusLabel1.Text = "Transfert Fini ";
                }
     
            }
    j'ai cette erreur , je ne ne peux pas comparer directement un byte et un bool.

    erreur.PNG

    voila un bout de l'interface:
    in.PNG

    quelqu'un aurait il une idée ??????

    -----

  2. #2
    Jack
    Modérateur

    Re : progressBar en parallèle avec le transfert des données

    la méthode Write ne renvoyant rien, je ne vois d'ailleurs pas la raison de la comparaison avec un booléen.

    Tu envoie 2 fois ton buffer dans le port série. La 2ème fois le buffer est forcément vide.

    pour que la prograssbar évolue de concert avec les données envoyées, je ne vois pas d'autre moyen que d'envoyer les données une à une ou par petits paquets, chaque paquet correspondant à une barre de la progressBar

  3. #3
    tinoch

    Re : progressBar en parallèle avec le transfert des données

    Bonjour,
    merci pour ton aide.
    est ce que tu peux l'illustré ça avec un bout de code ?????

  4. #4
    Jack
    Modérateur

    Re : progressBar en parallèle avec le transfert des données

    Je suis plus C++ que C#. Qu'est-ce que tu n'as pas compris dans ce que je t'ai proposé?
    Dernière modification par Jack ; 07/04/2015 à 11h08.

  5. A voir en vidéo sur Futura
  6. #5
    tinoch

    Re : progressBar en parallèle avec le transfert des données

    je ne voix pas comment faire ça

  7. #6
    Jack
    Modérateur

    Re : progressBar en parallèle avec le transfert des données

    Je ne comprends pas comment tu as pu écrire tout ce code et ne pas arriver à envoyer une trame octet par octet. Il suffit de faire une boucle et mettre un seul octet dans le buffer à chaque appel à la méthode write.

  8. #7
    Bluedeep

    Re : progressBar en parallèle avec le transfert des données

    Citation Envoyé par Jack Voir le message
    Je ne comprends pas comment tu as pu écrire tout ce code et ne pas arriver à envoyer une trame octet par octet. Il suffit de faire une boucle et mettre un seul octet dans le buffer à chaque appel à la méthode write.
    Il n'a pas besoin d'envoyer octet par octet. Il pourrait décider arbitrairement que sa progressBar est, par exemple, à "10 pas" (via les propriétés Minimum et Maximum du contrôle en question, la valeur de la PB étant toujours entière) et scinder sa quantité de donnée en paquet d'un dixième de l'ensemble et faire un write pour chaque paquet, en incrémentant de 1 à chaque fois la propriété Value de la PB.

  9. #8
    Bluedeep

    Re : progressBar en parallèle avec le transfert des données

    Ici, je vois un autre problème : visiblement, l'envoi est traité dans la thread de l'UI (bof, bof) et il est possible que la PB ne réagisse pas.
    Insérer un appel à

    Code:
    Application.DoEvents();
    après chaque incrément de la Value de la PB.

  10. #9
    Jack
    Modérateur

    Re : progressBar en parallèle avec le transfert des données

    Citation Envoyé par Bluedeep Voir le message
    Il n'a pas besoin d'envoyer octet par octet. Il pourrait décider arbitrairement que sa progressBar est, par exemple, à "10 pas" (via les propriétés Minimum et Maximum du contrôle en question, la valeur de la PB étant toujours entière) et scinder sa quantité de donnée en paquet d'un dixième de l'ensemble et faire un write pour chaque paquet, en incrémentant de 1 à chaque fois la propriété Value de la PB.
    C'est ce que j'ai proposé dans mon message #2, mais comme ça paraissait trop compliqué, j'ai essayé de commencer par des choses simples.

    A+

  11. #10
    Bluedeep

    Re : progressBar en parallèle avec le transfert des données

    Citation Envoyé par Jack Voir le message
    C'est ce que j'ai proposé dans mon message #2, mais comme ça paraissait trop compliqué, j'ai essayé de commencer par des choses simples.

    A+
    Oui, en effet.

  12. #11
    Jack
    Modérateur

    Re : progressBar en parallèle avec le transfert des données

    pas de problème. Ton explication était plus claire d'ailleurs.

Discussions similaires

  1. probleme transfert données entre tel portable avec pc
    Par aigle82 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/06/2014, 13h07
  2. Réponses: 1
    Dernier message: 19/06/2013, 20h51
  3. Réponses: 0
    Dernier message: 21/05/2012, 14h21
  4. PIC Envoyer des données en parallèle d'un programme
    Par inoxxam dans le forum Électronique
    Réponses: 4
    Dernier message: 25/02/2010, 22h09
  5. TIPE MP transfert de données avec/sans fil
    Par PastequeMan dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 21/09/2005, 21h07