Salut,

Je veux ecrire une fonction qui recupere un flux binaire en sortie de ReadFile sur RS232.
J'ai un code fonctionnel mais limite a un flux de quatre octets car je stocke le retour de ma fonction dans un unsigned long int.
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
typedef unsigned long int bin32;
bin32 RS232::recep(int trame_size)
{
    //char buffer[trame_size+1];
    bin32 buffer = 0;
    DWORD dw_octet_recus;
 
    bool result = ReadFile(h_com, &buffer, trame_size, &dw_octet_recus, NULL); //NULL pour le mode synchrone
 
    if(result == true){
        if (dw_octet_recus != 0){
            return buffer;
        }
    }else{
        cerr << "erreur sur la fonction de reception\n";
    }
    return 0;
}
Je voudrais etre capable de recupere un flux de longueur indeterminee. J'ai donc pense a plusieurs solutions :
_ declarer un tableau d'unsigned char (il faut quand meme gerer sa dimension)
_ utiliser une string (ca facilite l'extraction de donnees mais ca m'oblige a utiliser des "octets signes")
_ creer un vector<unsigned char> (il faut implementer les fonctions d'extraction)

Qu'elle est, selon vous, la meilleure solution ?

Question subsidiaire : Est-ce que ca vaut la peine de recuperer plusieurs octets d'un coup a l'interieur de ReadFile, plutot que d'en recuperer un a la fois et de faire une boucle sur ReadFile ?