Périphériques

Signaler
Messages postés
26
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
5 août 2011
-
Messages postés
58
Date d'inscription
mardi 6 janvier 2004
Statut
Membre
Dernière intervention
13 juillet 2007
-
Salut la communauté,
Je travaille sur un programme. Il s'agit de simuler deux périhphériques qui communiquent
sur les ports Com, avec un fichier log qui enregiste les messages dans les 2 sens.
Le programme fonctionne correctement, si j'ai 2 ou 3 échanges.
Dès que, j'ai codé un fonctionnement continu, le CDialogue n'apparait plus, le prog se lance
et s'arrête aussitôt, avec un fichier log de 22k.
Le moniteur de perf. ne montre pas de surconsommation de ressources. Que peut être le prob.
et surtout comment faire pour que ça marche de manière continue?
Merci pour toute aide! (je travaille sous Visual C++ 6 et les ports com sont virtuels).


          -----------------                                   ----------------------
          | périf virt 1    |                                 | périf virt 2           |
          | msgs perif 1  |   WriteCom1           | msgs périf 2         |
          |                       |-------|--------------->|                              |
          |                       |         |  WriteCom2  |                              |
          |                       |<-----|--------|--------|                               |
          |                       |         |           |           |                              |
          -----------------           |           |            ---------------------- 
                                            |          |
                                           |           |
                                   ------|--------|-------
                                   |                             |
                                   |  fichier log           |
                                    -----------------------
                           Architecture de l'application (à base de CDialog sous Visual c++6)








 

1 réponse

Messages postés
58
Date d'inscription
mardi 6 janvier 2004
Statut
Membre
Dernière intervention
13 juillet 2007

A première vue, je crois que le problème se situe au niveau des THREAD. Je crois que tu en as pas. Le formulaire gèle en général quand le programme est occupé à faire un traitement ailleurs. Pour avoir déjà fait un programme très simulaire au tient, je suis presque certaine que cela est ta nouvelle fonction que tu as ajouté. Pourrais-tu la copier/coller S.V.P. ? Pourrais-tu m'indiquer comment celle-ci est appelé et interagit dans ton code?

Solutions :



<li>Ajouter un thread qui vérifie s'il y a de nouveau message d'arrivé.</li>
<li>Faire une classe Message qui contient : CString Message, Event eMessageArrivé, bool VerifierMessage( ),void AjouterMessage(CString) ... Quand AjouterMessage( ) reçoit de nouvelle donnée, il met l'évenement eMessageArrivé à true.</li>
<li>Dans ton Dialogue, tu fais la fonction qui appel VerifierMessage( ) et si true tu récupère la donnée et tu reset on Event à false.</li>

L'Avantage de faire cela de moi prendre le temps CPU. Ce qui permet au reste du programme de continuer et de ne pas être bloqué à un endroit précis. ICI je prend pour acquis que tu n'as pas mis de thread.

sur cela, Bonne continuation.

Mieux vaut être blonde et poser des questions que de rester ignorante !!!!