Bonjour,

Je souhaite faire communiquer deux système Linux sur un lien UART.
J'utilise pour cela un descripteur et la fonction select().

Voila mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
int fdport;
fd_set readfs;
 
fdport = open("/dev/ttyS1", O_RDWR ,0);
 
FD_ZERO(&readfs);
FD_SET(fdport, &readfs);
 
if( select(fdport + 1, &readfs, NULL, NULL, NULL) < 0)
 
[...]
Mon problème, c'est que mon code ne sort de la fonction select() que lorsque ttS1 recoit le caractère "retour à la ligne"

J'ai fait le test en faisant un echo depuis le Linux distant, je sors bien du select(). Par contre en envoyant un buffer autre, le programme reste dans le select(), jusqu’à recevoir un retour à la ligne.

Comment faire pour que le select() retourne quelque chose dès réception d'octets?
Ou alors faut il que j'utilise d'autres fonctions?

Merci de votre aide