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

 C Discussion :

Saisie clavier non bloquante


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de mnemozip
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 26
    Par défaut Saisie clavier non bloquante
    Bonjour,

    J'aimerai savoir comment en C, on gère les entrées sans être bloqué, afin de réaliser plusieurs choses simultanément :

    - Peut-on lire si le buffer clavier est vide ou pas ?

    - Pour le temps écoulé, quel méthode utilisez-vous ? (peut on gérer un pseudo timer en C ?)

    - Lorsqu'un port série est ouvert, comment savoir si le buffer de réception est plein ou pas ?

    Bien évidement, c'est pour réaliser une boucle de gestion de ces 3 éléments.

    Merci par avance pour votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par défaut
    Citation Envoyé par mnemozip Voir le message
    Pour le temps écoulé, quel méthode utilisez-vous ? (peut on gérer un pseudo timer en C ?)
    En attendant d'avoir 1 réponse sérieuse regarde mon message sur 1 autre forum

    Pour calculer le temps, si je ne me trompe pas, c'est dépendant du système d'exploitation. Mon code montre à peu près 1 méthode pour chacun et ensuite utilise pour te faire ton avis.

  3. #3
    Membre averti Avatar de mnemozip
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 26
    Par défaut voila du concret, merci
    Merci beaucoup, le traitement du temps écoulé en multi-plateforme en plus.

    C'est vraiment une bonne base de travail. Encore merci.

    Reste les deux autres a traiter...

  4. #4
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Ta question est un peu vague , pour la seconde j'utilise clock() , tout simplement.

    Pour la 3 eme , ben vu que ça dépend de l'OS ou de la machine cible...

  5. #5
    Membre averti Avatar de mnemozip
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 26
    Par défaut
    Citation Envoyé par Kannagi Voir le message
    Ta question est un peu vague , pour la seconde j'utilise clock() , tout simplement.

    Pour la 3 eme , ben vu que ça dépend de l'OS ou de la machine cible...

    Serte, la problématique se présente aussi bien sous Linux que sous Windows.

    Il me serait très utile concrètement d'avoir une solution pour chaque OS.

    Citation Envoyé par skeud Voir le message
    Regarde du coté des thread, c'est ce qui est utilisé pour avoir une gestion simultané de plusieurs tache. Par exemple:

    Un thread qui s'occupe de la gestion de l'entrée standard
    Un thread qui s'occupe des taches à faire

    Le tout communiquant par une structure partagée protégée par une mutex (ou mieux une liste chainée qui possède les actions à effectuées).

    Suivant le contexte de ce que tu as à faire, l'implémentation peut variée
    Merci pour l'information, j'aime bien l'indépendance des traitements.

    Aurais tu un lien a suivre, pour la mise en place de thread sous Linux et sous Windows ?

    Citation Envoyé par WhiteCrow Voir le message
    Pour quelle plateforme ???

    Parce que c'est toujours une bonne idée de ne pas réinventer la roue … il y a libevent, gnu glib, et beaucoup d'autres …
    Mon application devra pouvoir être installée sur un Linux ou un Windows donc, je recherche la solution adaptée à chaque OS.

  6. #6
    Membre Expert
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mnemozip Voir le message
    Bonjour,

    J'aimerai savoir comment en C, on gère les entrées sans être bloqué, afin de réaliser plusieurs choses simultanément :
    Regarde du coté des thread, c'est ce qui est utilisé pour avoir une gestion simultané de plusieurs tache. Par exemple:

    Un thread qui s'occupe de la gestion de l'entrée standard
    Un thread qui s'occupe des taches à faire

    Le tout communiquant par une structure partagée protégée par une mutex (ou mieux une liste chainée qui possède les actions à effectuées).

    Suivant le contexte de ce que tu as à faire, l'implémentation peut variée

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Le plus simple imo est d'utiliser SDL2, et une simple fenêtre pour afficher du texte, et supporter le clavier pour en envoyer.
    Avec SDL_ttf2 (ou SDL2_ttf ?) pour gérer la police d'écriture.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Membre émérite
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Par défaut
    Pour quelle plateforme ???

    Parce que c'est toujours une bonne idée de ne pas réinventer la roue … il y a libevent, gnu glib, et beaucoup d'autres …

  9. #9
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    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 315
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    Pour éviter d’écrire du code différent pour chaque plateforme il te faut un framework de haut niveau compatible dans chacune d’elles. Il en existe plusieurs. Je te propose Gtk qui est une liste de bibliothèques pour programmer des applications graphiques mais qui disposent entre autre d’une bibliothèque : la glib.

    https://developer.gimp.org/api/2.0/g...b-Threads.html

  10. #10
    Membre averti Avatar de mnemozip
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 26
    Par défaut
    Merci,

    Oui c'est bien ce que je cherche.

    Faire tourner plusieurs process en parallèle.

    Je viens de voir :


    Je vais aller voir celui que tu m'as indiqué.

    Un peu beaucoup de lecture et de manipes mais c'est très motivant.

    A bientôt certainement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/07/2016, 14h29
  2. entrée au clavier non bloquante
    Par Z20500 dans le forum Général Python
    Réponses: 3
    Dernier message: 21/07/2009, 10h34
  3. Read non bloquant, repérer saisie backspace
    Par firemax dans le forum C
    Réponses: 7
    Dernier message: 18/05/2008, 10h00
  4. lecture non bloquante de clavier
    Par Bayard dans le forum Général Python
    Réponses: 4
    Dernier message: 10/08/2007, 21h27
  5. lecture stdin non bloquante et temps de saisie
    Par TabrisLeFol dans le forum C
    Réponses: 10
    Dernier message: 29/11/2006, 16h46

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