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++Builder Discussion :

WriteFile avec builder 6


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    50
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Par d�faut WriteFile avec builder 6
    J'ai un projet ou je dois utiliser des modem radio afin de communiquer avec une carte Beck, mon probleme est que le modem radio ne supporte que 90 caracteres et que je lui envoie plus de 250 caractere donc il faut que je decoupe par paquet de 90 mais mes boucle ne fonctionne pas .
    Ma question est est ce que on peut mettre la fonction WriteFile fans une boucle while?
    Voici mon code

    cpt_boucle=0;
    while (cpt_boucle=(TailleBuffer/90)+1)
    {
    nbr=0;
    for (int j=0;j<90;j++)
    {
    buf[nbr]=BufferEmettre[j];
    nbr++;
    }
    return WriteFile (
    Handle_Communication, //handle de la communication
    //BufferEmettre, //Texte � transmettre
    &buf,
    //TailleBuffer, //Taille du texte � transmettre
    nbr,
    &TailleEcriture, //nombre de bytes �crit
    NULL);
    }

  2. #2
    Membre chevronn�
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par d�faut
    Bonjour,

    Tout d'abord, utilise la balise [CODE] et des indentations, ton code sera plus lisible.

    Ensuite, plusieurs erreurs se sont gliss�es dans ton code.

    Ex: quand on regarde l'instruction

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    while (cpt_boucle=(TailleBuffer/90)+1)
    {
    on s'aper�oit que tu ne sors jamais de ta boucle (� moins que TailleBuffer passe � -90 mais c'est une constante, je suppose ?), si ce n'est que dans ta boucle, on trouve un return ex�cut� dans tous les cas. Donc ta boucle ne sert � rien !

    Autre erreur, dans le WriteFile, tu transmets &buf alors qu'il faut justre transmettre buf. D'autre part, buf ne te sert � rien. Pourquoi ne pas utiliser BufferEmettre directement ?

    Bref, ton code n'a aucune chance de fonctionner.

    Sinon, WriteFile fonctionne bien entendu dans une boucle !

  3. #3
    Membre chevronn�
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par d�faut
    Je suppose que ce que tu veux faire est ceci:

    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
    /*
     * retourne le nombre d'octets émis
     */
     
    DWORD EnvoiMessage(char* BufferEmettre, int TailleBuffer,HANDLE Handle_Communication)
    {
        DWORD total_emis = 0;
        DWORD a_envoyer,nb_emis;
     
        while(TailleBuffer)
        {
            a_envoyer = (TailleBuffer>90 ? TailleBuffer : 90);
            if (!WriteFile(Handle_Communication,BufferEmettre,a_envoyer,&nb_emis,NULL))
            {
                return (total_emis+nb_emis);
            }
            total_emis += nb_emis;
            TailleBuffer -= nb_emis;
            BufferEmettre += nb_emis;
        }
        return total_emis;
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    50
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 50
    Par d�faut
    En faite j'ai trouve mon erreur c'etai le return qu'il faut enlever car du coup il l'execute qu'une fois.
    Par contre mon code fonctionne a merveille tel qu'il est.
    Merci quand meme

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. comment on peut faire un service avec builder c++
    Par infoactif dans le forum C++Builder
    R�ponses: 8
    Dernier message: 11/08/2005, 17h33
  2. XML / Xpath -> une solution avec Builder?
    Par say dans le forum C++Builder
    R�ponses: 3
    Dernier message: 12/05/2005, 11h56
  3. erreur link avec Builder C++
    Par axxel dans le forum DirectX
    R�ponses: 8
    Dernier message: 20/07/2004, 02h58
  4. XML avec Builder
    Par laury dans le forum C++Builder
    R�ponses: 4
    Dernier message: 23/06/2004, 13h50
  5. Comment cr�er une Table dans 1 Bdd ACCESS avec Builder??
    Par makandja dans le forum C++Builder
    R�ponses: 6
    Dernier message: 17/03/2004, 20h21

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