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 :

Problème en sortie de OnTimer


Sujet :

MFC

  1. #1
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut Problème en sortie de OnTimer
    Bonjour à tous,

    J'ai un problème en sortie du OnTimer il m'envoie vers ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /* These methods don't need a separate
       wchar version. Hence they need to be compiled only once from
       the original file */
     
    _CRTIMP void _cdecl _CrtDbgBreak(
        void
        )
    {
        DebugBreak();
    }
    La flèche sur DebugBreak();

    voici mon code du OnTimer et du Settimer

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    IMPLEMENT_DYNCREATE(CGAB_PDAView, CFormView)
     
    BEGIN_MESSAGE_MAP(CGAB_PDAView, CFormView)
    	ON_BN_CLICKED(IDC_BUTTON1, &CGAB_PDAView::OnBnClickedButton1)
    	ON_BN_CLICKED(IDC_BUTTON3, &CGAB_PDAView::OnBnClickedButton3)
    	ON_BN_CLICKED(IDC_BUTTON2, &CGAB_PDAView::OnBnClickedButton2)
    	ON_COMMAND(ID_MENU_PARAM32771, &CGAB_PDAView::OnMenuParam32771)
    	ON_WM_TIMER()
    END_MESSAGE_MAP()
     
                                 ....................
     
    void CGAB_PDAView::OnBnClickedButton1()
        /* Appuie sur le bouton Départ */
    {pause=0;
     surface_traitée=0.0;
    try
       {
         nIDEvent = SetTimer(1, 1000, NULL);
       }
    catch (char* Err)
       {if (strcmp (Err,"Erreur #003")==0)
         {MessageBox(TEXT("Impossible de lire sur le port com"),TEXT("Erreur #003"),MB_ICONSTOP);
         }
       }
    }
     
     
    void CGAB_PDAView::OnTimer(UINT nIDEvent) 
    		/* Action du timer chaque seconde */
    {CString tmp;  
    	 if (nIDEvent == 1)	
    	    {try
    	      {
                 if (pause==0)
    	          {pApp->NMEA183.recupTRAME();
    		       pApp->NMEA183.Calcul_surface(1.00,&surface_traitée);
    		       tmp.Format(__T("%.2f"),surface_traitée);
    		       SetDlgItemText(IDC_STATIC1,tmp);
    		      }
    		     else
    			 {surface_traitée=surface_traitée+0.0;
    		       tmp.Format(__T("%.2f"),surface_traitée);
    		       SetDlgItemText(IDC_STATIC1,tmp);
    	         }
    			}catch (char* Err)
    			{if (strcmp (Err,"Erreur #003")==0)
                   {MessageBox(TEXT("Impossible de lire sur le port com"),TEXT("Erreur #003"),MB_ICONSTOP);
                   }
                }
     
           }
     
    	CView::OnTimer(nIDEvent);
     
    }
     
    void CGAB_PDAView::OnBnClickedButton3()
    	/* Appuie sur le bouton Arret */
    {
     try
       {
    	pApp->NMEA183.Extraire_heure(heure);
        heureFR (heure);
        pApp->NMEA183.fermerGPS();
       }catch (char* Err)
       {if (strcmp (Err,"Erreur #005")==0)
         {MessageBox(TEXT("Impossible de fermer le port com"),TEXT("Erreur #005"),MB_ICONSTOP);
         }
       }
    	this->KillTimer(nIDEvent);
    }
    Je suis à la toute fin de mon projet. C'est le dernier problème à résoudre.

    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Par défaut
    je sais pas ou est ton probleme, mais voici un exemeple de ontimer qui marche chez moi :

    dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    int			m_nTimerId;
    dans le .c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    .
    .
    .
    m_nTimerId = SetTimer(1111 /* id */, 1000 /* ms */, NULL);
    }
    void CMainFrame::OnTimer(UINT nIDEvent) 
    {
     /*  code à executé tout les 1000 ms  */
    }

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Par défaut
    je cannais un probleme lié au ontimer avec les process multithread ou process duo.
    les codes du ontimer ne sont pas fini mais le second process apel à nouveau le ontimer. et certain ressource ne sont pas encore liberer et aussitot reutiliser.
    il faut utiliser des mutex pour regler ce probleme.

  4. #4
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut je précise
    J'ai fait un module de test avec un timer. toute les secondes le timer incrémente un float de 0.1 et l'affiche dans le static, je fais la meme chose dans ce programme sauf que le foat est un calcul de surface, avec le GPS. Le module de test fonctionne parfaitement et sur la même machine je mets mon appli GPS mais ca ne marche pas.

  5. #5
    Membre averti
    Inscrit en
    Février 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 33
    Par défaut
    regard en mode débug ou est arreter le débugeur dans la fenetre "Call strack".
    et remont dans une fonction de tes codes, et cela que tu aurai plus de precision sur le bug de ton programme.

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

Discussions similaires

  1. Problème Entrée-Sortie standards
    Par rajuto dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 11/06/2007, 15h37
  2. Problème de sortie dans un programme.
    Par IDE dans le forum C
    Réponses: 8
    Dernier message: 20/05/2007, 18h21
  3. [MySQL] Problème unicode sortie BD (MySQL 5)
    Par bractar dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/05/2007, 08h34
  4. Problème unicode sortie BD
    Par bractar dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 18/05/2007, 16h20
  5. petit problème de sortie de programme
    Par clampin dans le forum C
    Réponses: 2
    Dernier message: 17/06/2006, 11h51

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