IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Utiliser les IO d'un µC dans un select()


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 39
    Points : 32
    Points
    32
    Par défaut Utiliser les IO d'un µC dans un select()
    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

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 39
    Points : 32
    Points
    32
    Par défaut
    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.
    En fait c'est un peu plus compliqué que ça.

    L'accès actuel au clavier se fait de la façon suivante :
    1 - Lorsqu'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 avec ioctl().
    2 - Au changement d'étant de cette pin ioctl() le détecte et permet de lancer une fonction d'interrogation du µC clavier, qui renvoir à mon µC le code de la touche pressée. On n'a pas directement le code disponible mais il faut le demander.
    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.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 135
    Points : 66
    Points
    66
    Par défaut
    C'est quoi la question? lol

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 39
    Points : 32
    Points
    32
    Par défaut
    C'était ça :

    Citation Envoyé par DBoJ
    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 ?


    DBoJ

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    T'as pas moyen de demander a avoir un descripteur de fichier sur lequel qui indiquerait que des donnees sont dispos en lecture quand ton microcontrolleur a recu le signal qui va bien ? Tu pourrais continuer a utiliser ton select comme si de rien n'était en ajoutant juste un file descriptor en plus.

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/03/2008, 19h46
  2. Réponses: 5
    Dernier message: 02/02/2008, 11h35
  3. Utiliser les solveurs ODE de MATLAB dans un programme en C++
    Par yanndublanche dans le forum MATLAB
    Réponses: 8
    Dernier message: 12/12/2007, 15h40
  4. utiliser les attribut d'une classe dans une autre classe
    Par kaissaoui dans le forum Langage
    Réponses: 11
    Dernier message: 18/07/2007, 15h13
  5. Utiliser les index de listes déroulantes dans un bloc séparé ?
    Par debie1108 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/05/2007, 08h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo