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 :

[MFC] Utilisation de la classe CCom de Farscape


Sujet :

MFC

  1. #1
    Membre confirmé Avatar de Philippe320
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 179
    Par défaut [MFC] Utilisation de la classe CCom de Farscape
    Bonjour,

    je souhaite gérer le port série, et donc utliser la classe CCom de Farscape (voir FAQ)
    j'épluche l'exemple SerialDemo, et voilà ma question :
    peut-on totalement transposer SerialDemo à une boite de dialogue (Cdialog au lieu de CFormView) ?
    (bien-sûr j'ai essayé, mais ça ne fonctionne pas)
    Y'a t -il des choses à modifier ?

    Merci d'avance de vos réponses
    Philippe

  2. #2
    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,
    il ne devrait pas y avoir de probleme particulier autre que ceux de la transformation d'une application SDI en dialogue.
    en gros tu generes une application boîte de dialogue.
    tu transposes ce qui etait dans OnInitialUpdate dans OnInitDialog.
    tu mets en place les trois messages prives utilisés et c'est tout.

  3. #3
    Membre confirmé Avatar de Philippe320
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 179
    Par défaut
    Salut,

    merci de ta réponse :
    en fait, je voulais dire utiliser ta classe dans une boîte de dialogue, générée lors d'un clic menu, au sein d'une application MFC, qui a déjà une vue, un document et une frame "registred".

    Philippe

  4. #4
    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
    ça change quoi ?
    tout ce passe dans OnInitDialog , pour l'initialisation de la classe Com et le traitement des messages privés (cités plus haut).

  5. #5
    Membre confirmé Avatar de Philippe320
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 179
    Par défaut
    ça change que ta Formview de SerialDemo reçoit bien les messages privés, et ma vue à moi dérivée de CView ne les reçoit pas ....

    j'ai mis ça sur le compte de l'utilisation d'une CDialog au lieu de CFormview, mais je me trompe peut-être là.

    Qu'en penses-tu ?
    Philippe

  6. #6
    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
    montre comment tu as implementé ça dans ta classe .

  7. #7
    Membre confirmé Avatar de Philippe320
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 179
    Par défaut
    En fait, n'y arrivant pas, j'ai fait autrement, sans conserver le code initial.
    Cependant, que penses-tu de cette façon de faire:

    en fait, c'est l'application qui déclenche la réception d'un nombre connu de données : je n'utilise aucun message privé, seulement une boucle comme ça associée à un bouton de la boîte de dialogue :
    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
    if (!m_Com.PortOpen(COM,19200,'N',8,1)) { TRACE("Erreur à l'ouverture du port COM");
    EndDialog(IDOK);
    return FALSE;
    										} //if
     
    m_Com.SetCommMask(EV_RXCHAR); 
    m_Com.UseRtsCts(TRUE);
    TRACE1("Ouverture du port COM%d",COM);
     
    m_Com.PurgeTx();
    m_Com.PurgeRx();
     
     
    if (!m_Com.WriteBuffer("GO")) TRACE("Erreur dans la transmission de l'ordre");
     
     
    // Attente des données
    TRACE("Attente des données");
    while (m_Com.IsRXEmpty());
     
    TRACE("Réception des données");
     
    nombreCaractere=0;
     
    do {
    nb=m_Com.SizeUsedInRXBuf();
    ((CGavrocheApp*)AfxGetApp())->PumpMessages();	// pour éviter de bloquer Windows
    if (nb) {
    		m_Com.ReadBuffer((char *)buffer,nb);
    		index=0;
    		while(index < nb)  { donneesUSB += buffer[index++]; 
    							} //while
    		nombreCaractere+=nb;
     
    		} //if
    } while (nombreCaractere<6462);
     
    m_Com.PortClose();
    EndDialog(IDOK);
    return TRUE;
    Ca fonctionne, mais ce n'est peut-être pas très réglo ?

    Philippe

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/05/2008, 19h18
  2. Réponses: 7
    Dernier message: 18/09/2006, 22h01
  3. utilisation de la classe CBitmap de la MFC
    Par obiwane666 dans le forum MFC
    Réponses: 8
    Dernier message: 27/01/2006, 19h49
  4. [MFC] Utilisation de la classe CSocket
    Par Sh4rk dans le forum MFC
    Réponses: 3
    Dernier message: 01/06/2005, 16h42
  5. [MFC] Utilisation Drivers
    Par LAPLACE dans le forum MFC
    Réponses: 4
    Dernier message: 21/12/2002, 10h29

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