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 :

[Hyper Terminal et embarque] Intercepter une touche dans l'hyperterminal


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut [Hyper Terminal et embarque] Intercepter une touche dans l'hyperterminal
    Bonjour,

    Je developpe un outil de diagnostique de carte sur materiel embarque et pour cela j'utilise l'hyperterminal de Windows pour l'affichage.
    Je souhaiterai intercepter la saisie d'une touche dans l'hyper terminal (par exemple lorsque l'utilisateur tape la lettre a) pour passer d'un ecran d'affichage a un ecran Menu sur ce meme terminal (j'espere que je ne vous ai pas perdus )

    Apres plusieurs tentatives notamment en utilisant des getc, scanf... Je m'avoue a moitie vaincu

    C'est pour cela que je fais appel a vous en esperant obtenir qq pistes ou qq docs...

    D'avance, merci

  2. #2
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    allons y pour jouer aux devinettes ...
    tu utilise hyper terminal donc tu branche ton materiel sur port COM(serie)?
    tu veux donc faire tourner une appli sur le materiel embarqué, qui vas a la reception d'un caractere sur le port COM renvoyer un menu ?
    il faudrais savoir quel est le systeme sur ton materiel embarqué ...
    sur un systeme a base linux//unix tu peux chercher du coté des fonctions ioperm inb outb ou des fonctions de plus haut niveau si elles existent sur ton systeme embarqué : termios cela devrais te permettre de faire tout ce que tu veux ...

    ---
    peut etre que sur ton systeme embarqué le stdin est le port serie? je ne sais absolument pas quoi repondre ... j'espere avoir donné une piste.

  3. #3
    Membre éprouvé Avatar de gnto
    Homme Profil pro
    Ingénieur système logiciel
    Inscrit en
    Janvier 2006
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur système logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 923
    Points : 1 210
    Points
    1 210
    Par défaut
    Citation Envoyé par Mitch Buchannon
    Je souhaiterai intercepter la saisie d'une touche dans l'hyper terminal (par exemple lorsque l'utilisateur tape la lettre a) pour passer d'un ecran d'affichage a un ecran Menu sur ce meme terminal (j'espere que je ne vous ai pas perdus )
    comment ca intercepter ? tu voudrais modifier l'hyper Terminal pour récupérer une touche ou faire tourner un programme en parallele qui scanne le clavier ?

  4. #4
    Membre averti
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    Je te suggère simplement d'utiliser les fonctions d'accès fichier:
    sous unix: open(), read()
    sous win32: CreateFile(), ReadFile()
    Il te suffit d'ouvrir le port que tu spécifieras dans l'hyperterminal (par exemple COM1 sous Windows)

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Yop,

    Shame on me... J'avais effectivement oublie de dire que je passais par un port COM
    En fait, le but du jeu, c'est plutot un prog en parallele (donc non bloquant) qui scanne le clavier pour que, des que la touche est pressee, je vide l'hyperterminal pour y afficher un menu de selection.
    Le materiel embarque est sous Micro-OS II est je developpe sous Windows avec IAR...

    Encore desole... et merci pour votre rapidite J'ai encore vraiment beaucoup de progres a faire !

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Voici la fonction a laquelle j'aboutis pour lire un caractere :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    typedef struct {
        char* buf;  /* ptr to buffer                */
        U32 in;     /* newest data pointer          */
        U32 out;    /* oldest data pointer          */
        U32 cnt;    /* number of bytes in buffer    */
    } buffer;
     
    buffer bufRxCom8;
    buffer bufRxCom7;
    /*
    **-------------------------------------------------------------------------------------------------------
    **                                            BSP_Com_GetChar
    ** Description:
    **      Receives a byte of data from the Com port. Blocks if waiting for data
    **
    **  Arguments:
    **      port    -   port to get data from
    **
    **  Returns:
    **      char    -   data received from com port
    **
    **-------------------------------------------------------------------------------------------------------
    */
    char BSP_Com_GetChar(U32 port, U32 timeout, S32 * perr)
    {
      buffer* b;
      OS_CPU_SR cpu_sr;
      char retVal;
      U32 to=0;
     
      switch(port) {
        default:
        case BSP_COM8: b = &bufRxCom8; break;
        case BSP_COM7: b = &bufRxCom7; break;
      }
      *perr = BSP_OK;
     
      while(b->cnt == 0) {   /* no characters received yet  */
        if( timeout == 0 || to == timeout )
          break;
        OSTimeDly(1);
        to++;
      }
     
      if(timeout != 0 && to==timeout) {
        *perr = BSP_TIMEOUT;
        return 0;
      }
     
      OS_ENTER_CRITICAL();
     
      /* get a byte from the receive buffer */
      retVal = b->buf[b->out];
      b->out = (b->out + 1)%BSP_COM_RXBUFFER_SIZE;
      b->cnt--;
     
      OS_EXIT_CRITICAL();
     
      return retVal;
    }

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

Discussions similaires

  1. [AC-2002] Intercepter une touche n'importe où dans un formulaire
    Par DeFCrew dans le forum IHM
    Réponses: 2
    Dernier message: 14/05/2009, 09h30
  2. Réponses: 3
    Dernier message: 25/09/2006, 20h35
  3. Intercepter une touche Quick Report
    Par platoon64 dans le forum Delphi
    Réponses: 2
    Dernier message: 03/08/2006, 17h33
  4. [Visual C#]Recup une touche dans un évènement MouseDown
    Par Akta3d dans le forum Windows Forms
    Réponses: 8
    Dernier message: 02/12/2005, 17h13
  5. Intercepter une touche
    Par fredero dans le forum Langage
    Réponses: 15
    Dernier message: 05/06/2005, 15h45

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