begin process at 2012 05 30 10:09:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

MFC

 > 

tracer une courbe à partir d'un txt


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

tracer une courbe à partir d'un txt

jeudi 1 mars 2007 à 19:19:47 | tracer une courbe à partir d'un txt

daminou973

Membre Club
Bonjour à tous!

Je réalise actuellement un projet de deuxiéme année de bts iris.
Mon projet consiste à définir les profils de consommation d'une centrale electrique via une interface que j'ai faite et d'envoyer par l'intermédiaire d'un client/serveur les données du profil de consommation au technicien de suppervision...

La, j'ai un petit soucis pour tracer la courbe du profil en fonction du txt que je récuppére
Voici un exemple de la forme du txt :
1,0,0,2,30;4,2,30,8,0;8,8,0,0,0

ce qui signifie: 1 charge de 0h00 à 2h30
                      4 charges de 2h30 à 8h00
                      8 charges de 8h00 à 0h00

Voila le travail que j'ai effectué:
http://daminou973i.free.fr/MonTest.rar
je programme sous visual c++ 6

Mon probléme c que quand ca commence à arriver à 10h il y a 2 caractére dans mon tableau, alors mon algo devient faux, surrement qu'on peut faire beaucoup plus simplement, si vous avez des idées... merci


jeudi 1 mars 2007 à 22:31:02 | Re : tracer une courbe à partir d'un txt

daminou973

Membre Club
en fait pour etre plus précis, j'arrive à gerrer les heures de 0 à9 mais pas de 10 à 23 et les minutes j'arrive pas à les gérer vu que c'est 15,30,45 défois et que c'est un tableau de char.
FILE *donne_charges=NULL;
    int i=0;
    int k=0;

char s[48];
            donne_charges = fopen( "charges.txt", "a+" );
            fscanf(donne_charges,"%s",s);
            int heure;
            int charge;
           


            for(int j=0;j<=7;j++)
            {
                //utiliser atoi
                    heure=s[2+i];
                    heure=heure-48;                       
                        XValues[j] = heure;
                        charge=s[k];               
                charge=charge-48;
                YValues[j] = charge;               
                i=i+12;               
                j++;   
                heure=s[2+i];
                heure=heure-48;
                XValues[j] = heure;               
                YValues[j] = charge;
                k=k+12;
              
            }

avec ca j'arrive à gérer les heures de 0 à9 mais sans prendre en compte les minutes en fonction des charges
c'est un peu farfellu mais les fonctions en c++ je lé connais pas trop...

vendredi 2 mars 2007 à 01:04:38 | Re : tracer une courbe à partir d'un txt

BruNews

Administrateur CodeS-SourceS

for(int j=0;j<=7;j++) - c'est quoi ce 7 et sur quoi tu boucles ???
------------------------

Voila une piste possible, j'irais dans ce sens si je devais le faire.
Gaffe aux possibles fautes de frappe, je tape direct ici et je ne teste donc rien.

typedef struct _BNEDF {
  DWORD chrg;
  DWORD hd;
  DWORD md;
  DWORD hf;
  DWORD mf;
} BNEDF, *LPBNEDF;

#define MEMDISPO  (MEM_COMMIT | MEM_RESERVE | MEM_TOP_DOWN)

BNEDF edf;
BYTE *pbuf, *c;
HANDLE hfl;
DWORD v, d;

hfl = CreateFile("charges.txt", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
if(hfl == INVALID_HANDLE_VALUE) return;
v = GetFileSize(hfl, 0);
if(GetLastError()) goto closeFL;
if(!v) goto closeFL; // VIDE ? ON SORT AUSSI
pbuf = (BYTE*) VirtualAlloc(0, v + 1, MEMDISPO, PAGE_READWRITE);
if(!pbuf) goto closeFL;
ReadFile(hfl, pbuf, v, &d, 0);
if(d != v) goto relMEM; // ERREUR LECTURE, ON SORT
// pbuf CONTIENT LE FICHIER + 1 ZERO FINAL POUR DIRE STOP SANS COMPTER
c = pbuf;

fromBUF:
edf.chrg = atoi(c); // CHARGE REMPLI
while((*c >= 48) && (*c <= 57)) c++;
if(*c != ',') goto relMEM; // LIGNE INVALIDE, BASTA
c++;
edf.hd = atoi(c); // HEURE DEBUT REMPLI
if(edf.hd > 23) goto relMEM; // LIGNE INVALIDE, BASTA
while((*c >= 48) && (*c <= 57)) c++;
if(*c != ',') goto relMEM; // LIGNE INVALIDE
c++;
edf.md = atoi(c); // MINUTE DEBUT REMPLI
if(edf.md > 59) goto relMEM; // LIGNE INVALIDE, BASTA
while((*c >= 48) && (*c <= 57)) c++;
if(*c != ',') goto relMEM; // LIGNE INVALIDE
c++;

edf.hf = atoi(c); // HEURE FIN REMPLI
if(edf.hf > 23) goto relMEM; // LIGNE INVALIDE, BASTA
while((*c >= 48) && (*c <= 57)) c++;
if(*c != ',') goto relMEM; // LIGNE INVALIDE
c++;
edf.mf = atoi(c); // MINUTE FIN REMPLI
if(edf.mf > 59) goto relMEM; // LIGNE INVALIDE, BASTA
while((*c >= 48) && (*c <= 57)) c++;
// JE FAIS LE CAS QUE CHAQUE ENREG FINIT PAR ';'
// MEME EN FIN DE LIGNE, SINON TU MODIFIERAS
if(*c != ';') goto relMEM; // ENREG INVALIDE

// TON SYSTEME D'AFFICHAGE (OU TRANSMETTRE) DONNEES ICI

// SAUT LIGNE POSSIBLE, RECHERCHE PROCHAIN ENREG
do {
  c++;
  if(!*c) goto relMEM; // FIN DE BUFFER
} while((*c == '\r') || (*c == '\n'));
if((*c >= 48) && (*c <= 57)) goto fromBUF; // AUTRE ENREG POSSIBLE, ON BOUCLE

relMEM: VirtualFree(pbuf, 0, MEM_RELEASE);
closeFL: CloseHandle(hfl);

ciao...
BruNews, MVP VC++

vendredi 2 mars 2007 à 09:15:51 | Re : tracer une courbe à partir d'un txt

yoyo269

Membre Club
Bonjour !

Daminou, au cas où tu voudrais voir un exemple de tracé de courbes à partir d'un txt, vas voir cette source :
TRACE DE COURBES

Ca pourra toujours t'aider pour quelque chose au cas où.

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]

vendredi 2 mars 2007 à 17:40:42 | Re : tracer une courbe à partir d'un txt

daminou973

Membre Club
Merci beaucoup à vous deux !

@BruNews : en fait j c l'indice des 2 tableaux pour remplir ma courbe, j'ai mis 7 car il y avait 8 points pour tracer la courbe à partir du txt je l'avais pas encore codé pour déterminer le nbre de pts.

En tous cas j'ai regardé en debug ce que ta fé et ca mé bien les valeurs en entier grace à ta structure, un grand merci ; seul probléme les goto le prof il n'aime pas trop ^^, on est censé faire une qualité logicielle orienté  "objet", mais déja le fait de pouvoir récuppérer les valeurs comme tu faits m'aura beaucoup aidé.

@
yoyo269: merci à toi, ca à l'air interessant aussi mais apparemment c sous dev c++ , je programme sous visual, mais je regarderai quand même.



vendredi 2 mars 2007 à 18:28:26 | Re : tracer une courbe à partir d'un txt

yoyo269

Membre Club
Désolé daminou, j'avais pas fait attention que tu programmais en MFC.
C'est un choix.
Sinon pour l'adapter à Visual C++ ça doit pas être bien dur.

BruNews, pour les goto, les profs n'aiment pas du tout ça en général (moi aussi ils étaient chiants avec ça ), mais il me semble que c'est plus rapide. Du moins c'est ce que je pense donc corrige moi si c'est bidon ce que je dis.

YOYO, @+.

"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
____________________________________________
[Site officiel de YoyoCut, découpe fichiers open source]

vendredi 2 mars 2007 à 20:38:32 | Re : tracer une courbe à partir d'un txt

BruNews

Administrateur CodeS-SourceS
Ce n'est pas du tout une question de rapidité mais de logique d'algo.
Je préfère qlqs goto à une floppée de IF et d'indentations. Imagine dans mon code, on aura un IF démarrant à chaque champ, certains pensent que c'est plus lisible, moi pas du tout.
goto a aussi l'avantage de mener direct où on veut sans répéter certaines instructions.
Dans tous les cas, qu'on l'écrive ou non le goto, le compilo les mettra (JMP en ASM), il n'y a aucun autre moyen de faire du conditionnel.
Exemple minimal:
if(pbuf) VirtualFree(pbuf, 0, MEM_RELEASE);
ok on ne voit pas le goto mais le compilo le mettra et donc produire:
cmp dword ptr pbuf, 0
je Lsuite ;// IL EST BIEN LA LE goto, AUCUN MOYEN AUTREMENT
push MEM_RELEASE
push 0
push pbuf
call VirtualFree
Lsuite:


ciao...
BruNews, MVP VC++
vendredi 2 mars 2007 à 23:18:50 | Re : tracer une courbe à partir d'un txt

daminou973

Membre Club
c'est bon , mon graphique marche !

cependant il y a certaines lignes que je n'ai pas compris,
pourais tu m'expliquer ces lignes :

#define MEMDISPO  (MEM_COMMIT | MEM_RESERVE | MEM_TOP_DOWN)
hfl = CreateFile("charges.txt", GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
pbuf = (BYTE*) VirtualAlloc(0, v + 1, MEMDISPO, PAGE_READWRITE);

merci

samedi 3 mars 2007 à 00:10:10 | Re : tracer une courbe à partir d'un txt

BruNews

Administrateur CodeS-SourceS
Tout ceci est appel direct API sans passer par le CRT (qui finit à tout coup sur API).

CreateFile() tente l'ouverture du fichier (obtenir handle). A noter que cette fonction fait plein d'autres choses dans différents contextes.
Equivalent CRT: fopen()

VirtualAlloc() fournit un bloc mémoire par allocation dynamique.
Equivalent CRT: malloc()

Détails complets avec exemples dans Richter:
http://brunews.com/brunews/download/JR4.zip
http://brunews.com/brunews/download/JR4Sources.zip

ciao...
BruNews, MVP VC++
dimanche 4 mars 2007 à 00:17:22 | Re : tracer une courbe à partir d'un txt

daminou973

Membre Club
merci pour ces précisions.









Cette discussion est classée dans : partir, projet, txt, tracer, courbe


Répondre à ce message

Sujets en rapport avec ce message

Tracer une courbe a partir de mesures enregistrées dans un fichier ( urgent) [ par aurelien070 ] Dans mon programme il faut que je visualise les mesures provenant de l'oscilloscope numérique sous forme de courbe.Mes mesures sont stockées dans un f tracer courbe en excel à partir de MFC [ par mabrouka ] bonjour,comment tracer une courbe en excel à partir de visual c++ MFCmerci Tracer une courbe à partir de données Excel en C/C++ [ par sokpassy85 ] Bonjour à toutes et à tous, Je dois programmer en C/C++ pour tracer une courbe à partir de données Excel (Ces données sont des mesures d'accélération au sujet de la classe graphxy [ par krussel ] Bonjour,Je cherche un moyen de tracer plusieurs courbes à partir d'un programme C++ (sisual studio 2005). J'ai trouvé sur le site une classe graphxy e Tracer une courbe dans VB 2008 [ par im24 ] Bonjour tout le monde je dois dessiner une courbe avec VB a partir d'un tableau sur Excel ( tableau de bord social ).... s'il vous plait pourriez vo Tracer courbe sous Visual C++ 2008 [ par tomtom3141 ] Bonjour, Après plusieurs heures de recherches sur le web, je n'ai pas trouvé de solutions simples pour tracer un graphique (points contenus dans un t Tracer courbe 2D avec dev C++ [ par ritchyv ] Bonjour,Comme je l'ai indiqué dans le sujet, je souhaite tracer une courbe à partir de points avec DEV C++. Comment dois je procéder ??Existe t'il une MFC : Tracer une courbe [ par zedzedzed ] Bonjour.Voila je suis un débutant en C++ et j'effectue un stage de developpement informatique.J'utilise Visual C++ version 6. Et mon maitre de stage m Ajout d'un graphe [ par ptitanic ] Bonjour tout le monde, Voilà,j'ai un tableau et j'aimerais tracer la courbe associée. J'aimerais donc savoir si qqn pourrait me conseiller sur la mei Conseil pour tracer une courbe [ par DMK04 ] Bonjour,Je voudrais savoir quel est selon vous, le meilleur outil pour tracer une courbe.Merci d'avance,Marc PYNAERT


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,733 sec (3)

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