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

MFC Discussion :

Actualisation du contenu d'un contrôle


Sujet :

MFC

  1. #21
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    hé bien c'est normal !!
    tu précises de recevoir deux évènements tu reçois 2 évènements possibles.
    pour tester ce n'est pas l'égalité qu'il faut implémenter mais un '&' logique ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if(port & EV_RLSD)
       {
             AfxMessageBox("DCD passe au niveau haut");
       }
    tu avais pourtant le test fait dans le thread:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if ((dwMaskEvent & EV_CTS) ||  // evenements divers.
                    (dwMaskEvent & EV_RXFLAG) ||
                    (dwMaskEvent & EV_BREAK) ||
                    (dwMaskEvent & EV_ERR) || 
                    (dwMaskEvent & EV_RING) ||
                    (dwMaskEvent & EV_RLSD))
                {
                    pCom->m_pParent->SendMessage(WM_CCOMEVENT,(WPARAM)pCom,dwMaskEvent);
     
                }

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Salut Farscape et encore merci de toutes tes réponses!!

    J'ai implémenté la fonction OnEventCom(WPARAM ch, LPARAM port) avec le & Logique comme tu me l'as indiqué mais toujours pareil, il détecte toujours que le DCD est tout le temps actif alors que non... je n'ai pas encore appuyé sur le bouton qui permet de l'activer.

    note: avec ton exemple, cela ne fonctionne pas non plus.

    Merci

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Je met tout mon code en relation avec la communication série:

    Initialisation du Port:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int numPort = m_cmb_startNumPort.GetCurSel()+1;
    	// reglages Port Serie.
       	if(!m_Com.PortOpen(numPort,4800,'N',8,1))
    		AfxMessageBox("Ouverture du port COM impossible");
     
    	//Sur detection du changement d'etat sur la broche DCD et sur données
    	m_Com.SetCommMask(EV_RXCHAR | EV_RLSD);
     
    	// lance le thread de communication.
    	m_Com.StartThread(this);
    Reception d'un évenement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    LONG CAppDlg::OnEventCom(WPARAM ch, LPARAM port)
    {
    	//Si changement d'etat du LSD
    	if(port & EV_RLSD)
    	{	
    		if(!DCD)
                       {
                              AfxMessageBox("Detection Du DCD");
    		DCDState = true;	//Le DCD a été activé
                        }
    	}
     
      	return 0L;
    }
    et enfin dans la fonction Thread:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ((dwMaskEvent & EV_CTS)   ||  // evenements divers.
                    (dwMaskEvent & EV_RXFLAG)||
                    (dwMaskEvent & EV_BREAK) ||
                    (dwMaskEvent & EV_ERR)   || 
    	   (dwMaskEvent & EV_RING)  || 
    	   (dwMaskEvent & EV_RLSD))
                {
                    pCom->m_pParent->SendMessage(WM_CCOMEVENT,(WPARAM)pCom,dwMaskEvent);
                }
                break;
    Si quelqu'un connaissant la classe CCom de Farscape pouvait m'aider, ca serait vraiment vraiment appréciable car là je bloque totalement pourtant j'ai suivi les conseils de farscape.

    Merci beaucoup d'avance.

  4. #24
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    il faut vraiment que tu lises la documentation des api32 concernées !
    le signal rlsd est envoyé dans OnEventCom quand il passe à 1 pas a zéro.
    donc tu sais quand il passe à 1.
    pour savoir si il passe à zéro il faut tester son état en permanence.
    il existe un api32 spécifique pour la gestion du modem. GetCommModemStatus voir doc MSDN
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DWORD dwModemStat;
    GetCommModemStatus(static_cast<HANDLE>(pCom),&dwModemStat);
    if(dwModemStat & MS_RLSD_ON)
    {
    // The RLSD (receive-line-signal-detect) signal is on
    }
    else 
    {
    // The RLSD (receive-line-signal-detect) signal is false
    }
    pCom c'est le pointeur sur l'objet de la classe CCom.

    rajoute cet opérateur dans la classe CCom:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       // renvoie le handle de communication
       operator HANDLE ( ) const{ return m_hCom;}
    ou tu peux rajouter cette fonction directement dans la classe:
    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
     
    // .H
    // renvoie le statut du modem
     bool GetCommModemStatus(LPDWORD lpModemStat);
     
    //.cpp
    //-----------------------------------------
    bool CCom::GetCommModemStatus(LPDWORD lpModemStat)
    {
        // 
        if(m_hCom== NULL)
        {
            TRACE0("CCom::GetCommModemStatus': NULL handle !");
            ASSERT(FALSE);
            return false;
        }   
        if(!::GetCommModemStatus(m_hCom,lpModemStat))
        {
            TRACE1("\nCCom::GetCommModemStatus:%d",GetLastError());
            GetError();
            return false;
        }
        return true;
    }

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Merci Merci Merci!!

    Je crois que je manque de méthode, la prochaine fois je réfléchirais et je me documenterais plus avant de poster!

    Merci encore Farscape!

    Kemanke

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Comment faire popur actualiser le contenu d'un div?
    Par Ministar dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/09/2007, 23h46
  2. Réponses: 1
    Dernier message: 16/08/2007, 09h43
  3. [WD10] [zone repetee] Actualiser le contenu
    Par Root_JDK dans le forum WinDev
    Réponses: 5
    Dernier message: 01/05/2007, 17h34
  4. Comment actualiser le contenu d'un répertoire
    Par nbelg27 dans le forum Access
    Réponses: 9
    Dernier message: 28/04/2006, 10h22
  5. actualiser le contenu d'une div
    Par Benjiijneb dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 08/02/2006, 10h17

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