Commit 89de38a42817d4e0fd5489029a858b43a27abadd
1 parent
db82449f
Ajout d'un fichier de lecture du port série
Showing
1 changed file
with
49 additions
and
0 deletions
Show diff stats
@@ -0,0 +1,49 @@ | @@ -0,0 +1,49 @@ | ||
1 | +#include <stdio.h> | ||
2 | +#include <termios.h> | ||
3 | +#include <sys/fcntl.h> | ||
4 | + | ||
5 | +void main(void) | ||
6 | +{ | ||
7 | + int fd; | ||
8 | + char c; | ||
9 | + struct termios termios_p; | ||
10 | + | ||
11 | + /* Ouverture de la liaison serie */ | ||
12 | + if ( (fd=open("/dev/ttyACM0",O_RDWR)) == -1 ) { | ||
13 | + perror("open"); | ||
14 | + exit(-1); | ||
15 | + } | ||
16 | + | ||
17 | + /* Lecture des parametres courants */ | ||
18 | + tcgetattr(fd,&termios_p); | ||
19 | + /* On ignore les BREAK et les caracteres avec erreurs de parite */ | ||
20 | + termios_p.c_iflag = IGNBRK | IGNPAR; | ||
21 | + /* Pas de mode de sortie particulier */ | ||
22 | + termios_p.c_oflag = 0; | ||
23 | + /* Liaison a 9600 bps avec 7 bits de donnees et une parite paire */ | ||
24 | + termios_p.c_cflag = B9600 | CS7 | PARENB; | ||
25 | + /* Mode non-canonique avec echo */ | ||
26 | + termios_p.c_lflag = ECHO; | ||
27 | + /* Caracteres immediatement disponibles */ | ||
28 | + termios_p.c_cc[VMIN] = 1; | ||
29 | + termios_p.c_cc[VTIME] = 0; | ||
30 | + /* Sauvegarde des nouveaux parametres */ | ||
31 | + tcsetattr(fd,TCSANOW,&termios_p); | ||
32 | + | ||
33 | + /* Affichage sur le terminal */ | ||
34 | + write(fd,"Tapez Ctrl-C pour quitter\n",26); | ||
35 | + | ||
36 | + /* Boucle de lecture */ | ||
37 | + while ( 1 ) { | ||
38 | + read(fd,&c,1); | ||
39 | + if ( c == 0x03 ) /* Ctrl-C */ | ||
40 | + break; | ||
41 | + printf("%03u %02x %c\n",c&0xff,c&0xff,c); | ||
42 | + } | ||
43 | + | ||
44 | + /* Fermeture */ | ||
45 | + close(fd); | ||
46 | + | ||
47 | + /* Bye... */ | ||
48 | + exit(0); | ||
49 | +} | ||
0 | \ No newline at end of file | 50 | \ No newline at end of file |