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

GTK+ Discussion :

[GTK]Linux, écran tactile et système embarqué


Sujet :

GTK+

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Par défaut [GTK]Linux, écran tactile et système embarqué
    Bonjour à tous,

    J'ai découvert ce forum il y a peu ainsi que tous les tutoriels GTK, ce qui, vu mon niveau m'a pas mal aidé.

    Je bosse actuellement sur un système embarqué : carte mère spécifique basé sur un processeur ATMEL AT92SAM9G45-CU, sous Linux avec un kernel 2.6.30, associé à un écran et une dalle tactile.
    Suite à quelques événements internes à ma boite, il a fallu que je reprenne le bébé en cours de route .
    J'ai eu quelques soucis avec la dalle tactile, il a fallu modifier la librairie Linux et pouvoir l'utiliser comme une souris à peu près correctement.

    Actuellement, mon problème serait plus du coté de GTK. Afin de faciliter l'utilisation de ce système, un Interface Homme Machine a été développé afin de fournir certaines informations aux utilisateurs. Qui dit dalle tactile impose une certaine ergonomie, donc gros boutons, interface épuré, etc, ...
    Dans le principe, au bout de quelques minutes et afin d'économiser l'énergie, cet IHM doit passer en veille et se réveiller en appuyant sur l'écran. Pour ce faire je coupe le rétroéclairage de la dalle LCD, c'est peut être pas le mieux, mais bon
    Apparaissent 2 soucis :
    - j'ai une dizaine de fenêtres différentes, et j'aimerai pouvoir savoir si l'utilisateur a cliqué sur l'écran, ceci quel que soit la fenêtre active, afin de réinitialiser le timer de mise en veille, donc comment choper les événements souris ?
    - lors de la mise en veille, le rétroéclairage est éteint, mais la dalle tactile fonctionne toujours et GTK aussi, donc si je clique pour ravoir l'affichage, je peux aussi cliquer sur un icône, et donc déclencher un événement, est il possible de bloquer sur toutes les fenêtres la possibilité de cliquer sur un élement ?

    J'espère avoir été assez clair
    Mon problème est comment dire assez spécial, et toute piste serait la bienvenue
    Merci

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 309
    Billets dans le blog
    5
    Par défaut
    Hum ! J'ai peut être une idée sans savoir si oui ou non elle répond à tes attentes.

    Comme tout "bureau" qui se respecte il dispose d'une fenêtre ROOT. C'est ce premier conteneur qui contient toutes les fenêtres, icônes et autres gadgets graphiques. Cette fenêtre ROOT écoute donc tous les signaux, dont les signaux provenant de la souris.

    Connecte le signal "button-press-event" à une fonction callback de ton choix. Avec cette méthode lors de l'appui sur la dalle cette fonction est appelée. Si la dalle est en mode veille alors tu réactives le rétro-éclairage et tu retournes TRUE. TRUE interdit la propagation de cet appui sur une fenêtre ou un bouton qui serait placé à l'endroit de l'appui. Si la dalle n'est pas en mode veille tu retournes immédiatement la valeur FALSE pour que l'appui soit propagé au widget placé à l'endroit de l'appui.

  3. #3
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Citation Envoyé par Ludovic_R_37 Voir le message
    Bonjour à tous,
    Je bosse actuellement sur un système embarqué : carte mère spécifique basé sur un processeur ATMEL AT92SAM9G45-CU, sous Linux avec un kernel 2.6.30, associé à un écran et une dalle tactile.
    Suite à quelques événements internes à ma boite, il a fallu que je reprenne le bébé en cours de route .
    J'ai eu quelques soucis avec la dalle tactile, il a fallu modifier la librairie Linux et pouvoir l'utiliser comme une souris à peu près correctement.
    Hum, je vois déjà pas trop ce que tu appelles la "librairie Linux"... C'est le serveur X qui gère les périphériques d'I/O. Comme tu es sur un système embarqué, tu as peut être un remplaçant à Xorg un peu plus léger... A moins que vous n'utilisiez le frame buffer ?

    Citation Envoyé par Ludovic_R_37 Voir le message
    Actuellement, mon problème serait plus du coté de GTK. Afin de faciliter l'utilisation de ce système, un Interface Homme Machine a été développé afin de fournir certaines informations aux utilisateurs. Qui dit dalle tactile impose une certaine ergonomie, donc gros boutons, interface épuré, etc, ...
    Dans ce cas utilise GTK3, il y a spécifiquement des widgets pour les interfaces tactiles, du type GtkSwitch par exemple.

    Citation Envoyé par Ludovic_R_37 Voir le message
    Dans le principe, au bout de quelques minutes et afin d'économiser l'énergie, cet IHM doit passer en veille et se réveiller en appuyant sur l'écran. Pour ce faire je coupe le rétroéclairage de la dalle LCD, c'est peut être pas le mieux, mais bon
    Le rétro-éclairage est ce qui consomme le plus, donc ce n'est pas idiot. En revanche cela m'étonne que tu gère cela tout seul. Des programmes comme gnome-power-manager sont là normalement pour gérer la politique de gestion de la mise en veille. Parce que si ta tablette a aussi du wifi par exemple, ça bouffe pas mal d'énergie aussi, et une vraie mise en veille (suspend-to-ram ou suspend-to-disk) serait sans doute un meilleur choix.

    Citation Envoyé par Ludovic_R_37 Voir le message
    Apparaissent 2 soucis :
    - j'ai une dizaine de fenêtres différentes, et j'aimerai pouvoir savoir si l'utilisateur a cliqué sur l'écran, ceci quel que soit la fenêtre active, afin de réinitialiser le timer de mise en veille, donc comment choper les événements souris ?
    Ton application GTK ne surveille que ses fenêtres. Je pensais aussi comme Gerald3d, que c'était peut être la fenêtre de plus haut niveau qui pouvait te donner ces informations (la root window). GTK te permet d'accéder à cette fenêtre, mais que ce soit gtk_widget_get_root_window ou gdk_get_default_root_window te renverront un GdkWindow, qui est un objet GDK (le middleware graphique de GTK). Les événements dont Gérald3d te parle sont accessibles pour des objets GTK, pas GDK.

    Je te conseille donc de voir du côté de ce que tu utilises comme serveur X, car c'est sans doute en utilisant cette API que tu pourras avoir accès à des infos bas niveau. Ou voir si tu peux intégrer gnome-power-manager, qui gère sans doute tout cela pour toi.

    Citation Envoyé par Ludovic_R_37 Voir le message
    - lors de la mise en veille, le rétroéclairage est éteint, mais la dalle tactile fonctionne toujours et GTK aussi, donc si je clique pour ravoir l'affichage, je peux aussi cliquer sur un icône, et donc déclencher un événement, est il possible de bloquer sur toutes les fenêtres la possibilité de cliquer sur un élement ?
    Une fois encore, regarde s'il t'est possible d'intégrer gnome-power-manager.

    Citation Envoyé par Ludovic_R_37 Voir le message
    J'espère avoir été assez clair
    Mon problème est comment dire assez spécial, et toute piste serait la bienvenue
    Merci
    C'est spécial mais intéressant. Si tu ne peux pas le dire publiquement, pourrais tu m'envoyer un message privé pour me dire chez qui tu développes cela ? Je cherche plus ou moins à changer de taf en ce moment (plutôt moins d'ailleurs: je commence une nouvelle mission lundi), mais j'aimerais bien avoir un nom d'entreprise qui fait du boulot motivant à garder sous le coude

    Merci et @+

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Par défaut
    Merci pour vos réponses.

    Comme je le disais, il a fallu que je reprenne le développement de cet interface graphique, alors que je maitrise pas ce genre de développement. Par exemple, j'ai beau essayé de changer la taille de police de certains textes dans mon interface, j'obtiens aucun résultat. Donc je galère pas mal.
    Je suis plus habitué à bosser sur le bas niveau, en langage C: communication sur liaison série RS232 ou 485, ...

    Pour répondre à liberforce, je vais apporter quelques précisions :
    - le serveurX utilisé est TinyX
    - la version de GTK est la 2.9.1
    - concernant l'intégration de gnome-power-manager, je maitrise pas suffisamment Linux (je verrai avec un autre collègue), ce système embarqué est un produit conçu de A à Z pour un usage très spécifique, donc le système n'est jamais en veille, il fonctionne 24H/24H 365j/365j et donc seul l'écran peut "s'éteindre" (tant que l'utilisateur n'interroge pas le système)

    Comme vous vous en doutait, je ne peux en parler plus précisément, la concurrence est devenu féroce dans mon activité, et avec tous les licenciements dans ma boite, ça devient compliqué.

    Encore merci de votre aide

  5. #5
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    En même temps je suis pas sur Tours, c'est pas moi qui vais te piquer ton boulot

    GTK 2.9.1 c'est assez vieux quand même (ce n'est même pas une version stable - désignées par X.Y.Z où Y est pair). J'espère que tu n'auras pas de soucis...

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 309
    Billets dans le blog
    5
    Par défaut
    Pour rebondir sur le premier commentaire de Liberforce, tu peux inter-agir avec la xlib en récupérant un pointeur "window" grâce à la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Window              gdk_x11_get_default_root_xwindow    (void);
    Ensuite tu peux affecter un callback comme je te le disais plus haut grâce à la Xlib. J'ai trouvé un premier site qui peut te montrer le principe : http://pficheux.free.fr/articles/lmf/xlib/#55

    Tout ceci n'est qu'une approche possible. Il existe peut être une manière plus simple de s'en sortir.

Discussions similaires

  1. GUI optimisé pour écran tactile : GTK, SDL ?
    Par dkmatt dans le forum GUI
    Réponses: 1
    Dernier message: 25/10/2009, 09h45
  2. GUI optimisé pour écran tactile : GTK, SDL ?
    Par dkmatt dans le forum Linux
    Réponses: 7
    Dernier message: 23/10/2009, 11h56
  3. [Écran] Développement sous écran tactile : choix de l'écran et du système
    Par d1g-2-d1g dans le forum Périphériques
    Réponses: 2
    Dernier message: 11/01/2009, 12h10
  4. ping sur système embarqué linux langage C
    Par clem86 dans le forum Réseau
    Réponses: 12
    Dernier message: 10/07/2008, 11h21
  5. Réponses: 4
    Dernier message: 08/04/2007, 11h49

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