1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
// lit un message
char messageToReceive[1024];
fileRead = ReadFile(
gphAutomaticTestTool_HandlePipe,
messageToReceive,
sizeof(messageToReceive), // au lieu de 1024, c'est plus sur
&bytesRead,
NULL);
// la taille de messageToReceive est toujours plus grande que messageToSend
// taille necessaire de messageToSend = (bytesRead / 2) - 2
char messageToSend[1024];
// saute les 2 caracteres "0x", c'est pour cela que la boucle commence a 2
// avance de 2 caractere à la fois puisque 2 codes ascii donne un caractere
int nb_byte_to_send = 0;
for(i = 2; i < bytesRead; i += 2)
{
// transforme 2 caracteres ASCII en un nombre
char tmp[3];
tmp[0] = messageToReceive[i];
tmp[1] = messageToReceive[i + 1];
tmp[2] = 0; // terminateur de chaine de caracteres
int carac = strtol(tmp, NULL, 16); // conversion de chaine base 16 en nombre
// ecrit dans le buffer
snprintf(&pMessageToSend[nb_byte_to_send],
sizeof(pMessageToSend[1]),
"%c", carac);
nb_byte_to_send++;
}
// ecriture dans le fichier
written = fwrite(pMessageToSend,
1,
nb_byte_to_send,
gpphAutomaticTestTool_ErrorFile); |
Partager