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

Langage Delphi Discussion :

envoie des données delphi


Sujet :

Langage Delphi

  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 envoie des données delphi
    Bonjour,
    j'ai une question, je voudrais traduire ce bout de code de Delphi en c#:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    i,nboucles : integer;
    paquet : string;
    if nboucles<=1278 then
    begin
         paquet:='';
         for i:=1 to 100 do
             paquet := paquet + chaine[i+100*nboucles];
         nboucles:=nboucles+1;
         progressbar3.stepit;
         statusbar1.SimpleText:=formatfloat('##0',nboucles/1278*100)+'% Transférés';
         comport2.writestr(paquet);
    end

    pouvez vous m'aider à comprendre ce bout de code ?

  2. #2
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    a priori, tu as une chaine "chaine" de 127900 caracteres, et selon la valeur de nboucles, on va envoyer un paquet de 100 caracteres sur le port com.
    Si tu as une boucle autour sur nboucles, je dirai que tu envoie "chaine" par paquet de 100 caracters sur le port com.
    avec une légère simplification du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if nboucles <= 1278 then
    begin
         paquet:=copy(Chaine, 100*nboucles+1, 100);
         Inc(nboucles);
         progressbar3.stepit;
         statusbar1.SimpleText:=formatfloat('##0',nboucles/1278*100)+'% Transférés';
         comport2.writestr(paquet);
    end

  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
    merci pour le retour;

    voila j'ai essayé de le traduire en c#
    Code c# : 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
     
    public string str;
    public int i=0;
    public string don;
     private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
    System.Threading.Thread.Sleep(100);
               if (str.Length > 0)
                 {
                     if (i < str.Length - (str.Length % 50))
                     {
                         don = str.Substring(i, 100);
                         serialPort1.Write(don);
                         i += 50;
                         toolStripStatusLabel1.Text = "Transfert...";
     
                     }
    else {toolStripStatusLabel1.Text = "Terminé";}
    }
    }
    est-il en cohérence ?

  4. #4
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Alors il me manque la fonction qui englobe ton code du 1er message, mais je trouve etonnant que, a la reception de quelconques données sur le port, tu renvoie ta chaine sur le meme port !
    Sinon, est-ce que (str.Length % 50) est un modulo ? dans ce cas tu ne va pas envoyer le dernier paquet si il fait moins de 50 caracteres.
    ca serait plutot :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    nbAEnvoyer = (str.Length - i) % 100;
    if (nbAEnvoyer > 0)
                     {
                         don = str.Substring(i, nbAEnvoyer);
                         serialPort1.Write(don);
                         i += 100;
    Etonnant, tu avance de 50 caracteres à chaque itération, mais tu en envoie 100 ... tu risque d'envoyer ABBCCDDE(+50char de n'importe quoi) au lieu d'envoyer ABCDE

Discussions similaires

  1. Réponses: 18
    Dernier message: 26/06/2008, 10h10
  2. [SQL] Pb Sql lors de l envoie des données via un formulaire
    Par xtiand4 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h18
  3. Envoi des données via mail
    Par zorba49 dans le forum ASP
    Réponses: 4
    Dernier message: 10/04/2006, 14h35
  4. Réponses: 1
    Dernier message: 05/04/2006, 09h49
  5. socket : envois des données impossible
    Par thechief dans le forum Réseau
    Réponses: 16
    Dernier message: 18/03/2006, 19h28

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