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

Windows Discussion :

detecter changement d'etat du CD


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 26
    Points : 12
    Points
    12
    Par défaut detecter changement d'etat du CD
    bonjour,

    Je souhaiterais détecter un changement d'état sur le port série (circuit CD detection de porteuse) apres activation d'un bouton poussoir relie via le port serie. Il me semble que c'est certainement possible en récupérant le message de Windows correspondant, ou en testant régulièrement l'état du circuit.
    J'ai fait un petit bout de soft, mais pourrais-je avoir votre avis sur ce dernier?
    #include<stdio.h>
    #include <Windows.h>

    main()
    {

    HANDLE h;

    h = CreateFile( "COM1", 0, 0,
    0,
    OPEN_EXISTING,
    0, 0 );

    if( h == INVALID_HANDLE_VALUE ){
    h = CreateFile( "COM2", 0,
    0, 0, OPEN_EXISTING,
    0, 0 );
    if( h == INVALID_HANDLE_VALUE ){
    printf( "Open err" );
    return 0;
    }
    }

    EscapeCommFunction( h, SETDTR );

    while(1){
    DWORD x00 ;
    GetCommModemStatus( h, &x00 );
    if( x00 & MS_RLSD_ON ) {
    printf("CD_ON \n" );
    EscapeCommFunction( h, SETRTS );
    }
    else {
    printf("CD_OFF \n" );
    EscapeCommFunction( h, CLRRTS );
    }
    }
    }
    MErci d'avance
    Sinon si vous avez une autre aolution je suis preneur

  2. #2
    Membre averti Avatar de pascal.barbier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 362
    Points : 442
    Points
    442
    Par défaut
    Pour RTS et DSR, ainsi que la détection d'activité de ligne ou de réception de caractère, tu n'as pas besoin de faire une boucle de pooling (coûteuse en CPU).
    Tu peux utiliser WaitCommEvent :
    WaitCommEvent
    www.iristechnologies.eu
    Centre de formation à Paris et Toulouse

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    merci pour votre reponse!

    J'ai regarder quelques exemples, mais je ne vois pas comment modifie mon programme actuel? avec la commande WaitCommEvent...

    Sinon est-ce plus facile avec le port parallele?

  4. #4
    Membre averti Avatar de pascal.barbier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2007
    Messages : 362
    Points : 442
    Points
    442
    Par défaut
    La modification du code est assez simple.
    Puisque le port COM2 est ouvert par CreateFile sans le flag FILE_FLAG_OVERLAPPED (ce qui simplifie les choses), il te suffit de remplacer la boucle while par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    result = WaitCommEvent(h, EV_DSR, NULL);
    La fonction est bloquée tant que l'événement (ici DSR) arrive.
    www.iristechnologies.eu
    Centre de formation à Paris et Toulouse

Discussions similaires

  1. changement d"etat PictureBox
    Par k_boy dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 12/10/2006, 11h52
  2. Réponses: 2
    Dernier message: 11/07/2006, 11h34
  3. [VBA-E]problème changement d'etat d'une cellule
    Par 12_darte_12 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/03/2006, 19h19
  4. [FLASH 8] Detecter changement valeur d'une variable
    Par orelero dans le forum Flash
    Réponses: 1
    Dernier message: 18/02/2006, 19h25
  5. Detection changement adresse IP
    Par MonsieurAk dans le forum Développement
    Réponses: 4
    Dernier message: 26/07/2005, 10h26

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