Bonjour.
Je suis en train d'écrire une application embarquée sous Linux.
Actuellement, grâce à un select(), elle permet de recevoir des données depuis une des deux liaisons séries. Or je dois ajouter une fonction keypad qui permet de lire depuis un clavier numérique 12 touches (0..9,*,#), mais qui est connecté en I2C à mon µC. J'ai cependant accès à n'improte quelle pin physique de mon µC car les développeurs du Linux sur lequel doit tourner mon appli ont créé un descripteur de fichier pour chacune d'elle. Enfin, mon clavier fonctionne actuellement très bien à l'aide d'un thread mais j'aimerais bien m'ne passer, si c'est possible.
L'accès actuel au clavier se fait de la façon suivante :
1 - Lorsuq'on presse une touche, un signal (une IT ?) est envoyée sur l'I2C sur une pin quelconque sur laquelle le thread fait une lecture bloquante.
2 - Au changement d'étant de cette pin, la lecture se fait via ioctl() et la valeur de la touche pressée est envoyée au µC.
3 - Le thread traite la touche pressée en fonction de l'état du clavier, de l'appli, de l'age de l'opérateur et du nombre de satellites espions visibles dans le ciel (bref pusieurs paramètres), et repard sur la lecture bloquante en attendant q'une autre touche soit pressée, tout en rendant la main à l'application qui elle reçoit des données via les liaisons RS232.
J'avais pensé utiliser pselect() à la place de select(), mais je se sais pas quel genre de signal j'attends, quel masque je dois créer ... Est-ce que quelqu'un a une idée ?
Merci
DBoJ
Partager