begin process at 2012 05 30 11:07:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

Rafraichir des données


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Rafraichir des données

lundi 9 juin 2008 à 10:08:07 | Rafraichir des données

nicolebarge23

Bonjour,

Je dois réaliser un logiciel permettant de récupérer et d'afficher des données provenant d'une communication RS232.
Je récupère correctement ces données, et les affiche aussi de la bonne façon.

MAIS je suis encore incapable de rafraichir le buffer contenant les données et incapable aussi de les afficher au rythme des transmissions.

Pour l'instant j'effectue un updateallview(0,0) dans ma fonction de lecture du port COM, mais cela ne fonctionne pas correctement ....

Si quelq'un pouvait m'expliquer comment effectuer un rafraichissement de données ainsi que le rafraichissement de la vue

Merci d'avance.....
lundi 9 juin 2008 à 10:30:14 | Re : Rafraichir des données

jfrancois

Bonjour,

On ne maîtrise pas l'arrivée des données sur le port RS232 donc il faut un programme qui soit en permanence à l'écoute de ce port. Dans votre programme il faut donc créer un thread qui ne fait que la lecture du port RS232 et qui place ce qu'il reçoit dans le buffer (qui est une file d'attente). Quant à la partie "visualisation", au lieu de lire le port RS232, elle lit le buffer : tant qu'il y a quelque chose dans la file d'attente, on traite et on visualise. Les 2 actions sont ainsi désynchronisées et fonctionnent à leur propre rythme. A priori la précaution principale à prendre est de ne pas saturer la file d'attente.


Jean-François

lundi 9 juin 2008 à 10:41:47 | Re : Rafraichir des données

nicolebarge23

Merci, mais justement comment j'effectue cette lecture en permanance de ce port??
Parce que moi, mas fonction de lecture s'effectue de la facon suivante :

J'appuis sur le bouton CONNECT, puis j'appelle la fonction d'ouverture du port COM, et une fois le port COM ouvert, j'appelle la fonction de lecture du port COM, et une fois ensuite, à l'aide d'une boite de dialogue, j'appelle la fonction d'affichage.


et justement mon problème est que je ne sais pas comment dire à ma fonction de lecture du port COM de s'effectuer tout le temps.. je remplis bien un buffer sous forme de file d'attente, mais cela se stoppe lorsque je l'affiche .....

qu'est ce qu'un THREAD?

voici ma fonction de lecture :


BYTE* CBCMDoc::PortRead()
{
 //Initialisation des variables
 BYTE *BufferIn;
 COMSTAT EtatCom;
 DWORD CodeErreur ;
 DWORD NbOctetsALire;

 CString Chaine;
 Chaine.Format(" Appuyer sur ENTER pour commencer");
 AfxMessageBox(Chaine);


 if (!ClearCommError(hFile,&CodeErreur,&EtatCom))
 {
      // Handle the error.
  CString Chaine;
  Chaine.Format(" ClearCommError failed with error %d", GetLastError());
  AfxMessageBox(Chaine);
  return FALSE;
 }    // Si rien, alors pas de  périphérique.
 else         // Si présence port, alors définir :
 {
  NbOctetsALire = EtatCom.cbInQue;
 }


 //--------- Lecture de tous les octets reçus et stockage dans le tableau BufferIn---
 BufferIn=new BYTE[NbOctetsALire];
 // Allocation dynamique

 if (!ReadFile(hFile , BufferIn , NbOctetsALire , &NbOctetsLus , NULL))
 {
  CString Chaine;
  Chaine.Format(" Could not read to file (error %d)", GetLastError());
  AfxMessageBox(Chaine);
        return FALSE;
    }

// UpdateAllViews(NULL);
 //Retour du buffer contenant toutes les données transmises par le port
 return BufferIn;
}

lundi 9 juin 2008 à 13:45:24 | Re : Rafraichir des données

jfrancois

Un "thread" (fil en français) est un programme (assez court en général) qui va être exécuté indépendemment du programme principal qui l'a lancé via la fonction CreateThread(). Au vu de vos explications, je dirais que l'appui sur le bouton CONNECT va lancé ce thread qui contient les instructions d'ouverture de la connexion suivit de la boucle de lecture du port/écriture dans la file d'attente. La fonction d'affichage lira et traitera cette file d'attente.



Jean-François

lundi 9 juin 2008 à 13:56:30 | Re : Rafraichir des données

nicolebarge23

Merci pour la réponse, je vais m'orienter sur cette voie de THREAD.
En effet, une fois que je suis connecté à mon port COM, j'ai besoin de tout le temps utiliser la fonction de lecture de ce port.

Une fois, ce thread lancé, il faut utiliser différentes instructions spécifiques pour actualiser ou cela se fait-il tout seul???

MERCI
lundi 9 juin 2008 à 14:17:19 | Re : Rafraichir des données

jfrancois

Une fois le thread lancé il vit sa propre vie !

Voir ce post avec des exemples de thread (sous console mais le principe est le même) : http://www.cppfrance.com/infomsg_THREAD_1121058.aspx

Jean-François



Cette discussion est classée dans : données, afficher, rafraichir, aussi, correctement


Répondre à ce message

Sujets en rapport avec ce message

Recuperation de données [ par Witchblade ] Bonjour tous le mondedsl si je ne m'epliqe pas assez clairement mais je suis un petit nouveaux et peu de connessance en progJ'ai quelque petite questi afficher une table de ma BD dans ma fenêtre principale [ par romydamour ] bonjour tout le monde, voilà je fais une API win32 sous visualc++, et je travaille avec les bases de données par le biais de ADO.En fait je récupère d (C++)Afficher les données de BD ds BCG Grid [ par khaliloenit ] Bonjour, Je suis en cours de développement d'une application en C++ et je voudrais afficher les données de la base de données (accès, sqlserver, oracl afficher le contenu d'un fichier txt en C [ par moreman ] salut je voudrais afficher afficher le contenu d'un fichier txt en C a l'ecranen fait j'ai fait la creation et l'ecriture de données dedans mais je tr afficher dans une fenetre type oscilloscope [ par roro21s ] bonjour , j'ai réalisé une carte  d'acquisition de signal qui peut m'envoyer par rs232 ou USB les données numérisées. Mon problème est au niveau logic reception données depuis gprs vers une @ ip fixe [ par zdoucha ] Salut à tous, Je veux developper une application qui me permet de recuperer une donnée envoyé par un µcontrolleur msc1210 a travers un gprs vers une @ Importer des données du port série vers Excel [ par Nicozo77100 ] Bonjour,Je souhaite récupérer des données qui arrivent sur le port série du pc et les écrire dans un fichier excel, qqun aurait il des sources permett pgme pour afficher le login [ par merieait ] salut,donnez moi un pgme qui peut m'afficher l'état des processus lors de leurs éxecutionet j'ai un autre pb c'est d'enregistrer le login de l'utilisa


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales