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.Je voudrais etre capable de recupere un flux de longueur indeterminee. J'ai donc pense a plusieurs solutions :
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; }
_ 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 ?
Partager