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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
#include <termios.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#define TAILLE_BUF 16
int main(void)
{
//Local variables
int i, balise, nb_length, nb_corps, etape, fin_lecture, compare, file_def;
char lecture, checksum, length;
char buf[TAILLE_BUF];
bzero(buf, TAILLE_BUF);
write (file_def, "\x68\x08\x08\x68\x73\xA9\x00\x18\x34\x56\x78\x0A\x40\x16",14);
compare = 0;
i = 0;
balise = 0;
etape = 0;
length = 0;
nb_length = 0;
nb_corps = 0;
fin_lecture = 0;
checksum = '\x00';
sleep(1);
do
{
read(file_def, &lecture, 1);
switch(lecture)
{
case '\x68' : if (etape == 0)
{
etape ++;
buf[i++] = lecture;
printf(" %02x", lecture);
}
else if ((etape == 1)&&(nb_length == 2))
{
etape ++;
buf[i++] = lecture;
printf(" %02x", lecture);
}
break;
case '\x16' : if ((etape == 2)&&(nb_corps == 11))
{
buf[i] = lecture;
printf(" %02x", lecture);
fin_lecture = 1;
}
break;
default : if (etape == 1)
{
length = lecture;
buf[i++] = lecture;
printf(" %02x", lecture);
nb_length ++;
}
else if (etape == 2)
{
buf[i++] = lecture;
printf(" %02x", lecture);
nb_corps ++;
chexksum += lecture;
}
break;
}
}while (!fin_lecture);
return (0); |
Partager