Zed graph+timer [Résolu]

k3ti0 17 Messages postés mercredi 5 septembre 2007Date d'inscription 7 mai 2008 Dernière intervention - 3 mars 2008 à 17:46 - Dernière réponse : k3ti0 17 Messages postés mercredi 5 septembre 2007Date d'inscription 7 mai 2008 Dernière intervention
- 12 mars 2008 à 08:46
Bonjour je dois faire un projet en C# réalisant des graphiques en temps réel avec une base de donnée.
J'arrive a afficher dans une textbox tous les secondes les valeurs qui sont dans ma base de données (access) grace a un timer mais je n'arrive pas a l'afficher sur mon graphe j'utilise zedgraph.
J'aimerais savoir si c'est possible et comment ca marche .

voici le code qui me permet de récuperer les valeurs dans access:

private
void timer1_Tick_1(
object sender,
EventArgs e){

counter++;

label1.Text = counter.ToString();

int idLigne = counter;

//requete à exécuter (ici, nous récupérons les dates et valeurs des mesures de la courbe 5

//vous pouvez bien évidemment modifier cette requête

string requete =
"SELECT ID, MESURE, PAS, FC , FR, SPO2 FROM MESURES WHERE ID=" + idLigne; 

//création de la connection

OdbcConnection connection =
new
OdbcConnection();

//chaine de connection (du type "DSN=monDSN)

string chaineDeConnection =
"DSN=baseTest";

//affectation de la chaine de connection à la connectionconnection.ConnectionString = chaineDeConnection;

//ouverture de la connectionconnection.Open();

//création du DataSet

DataSet data =
new
DataSet();

//création du OdbcDataAdapter

OdbcDataAdapter adapter =
new
OdbcDataAdapter(requete, connection);

//remplissage du DataSet avec les résultats de la requêteadapter.Fill(data);

//on déclare maTable comme étant la première table du DataSet (celle qui nous interesse)

DataTable maTable = data.Tables[0];

//on affiche l'ID de la courbe concernée (\r\n pour sauter une ligne)textBox1.Text +=

"Ligne " + idLigne +
"\r\n\r\n";

foreach (
DataRow row
in maTable.Rows){

//et on affiche dans la textBox la date et la valeur de chaque mesure de la courbe
ID = (
int)row[0];

MESURE = (
double)row[1];PAS = (

double)row[2];FC = (

double)row[3];FR = (

double)row[4];SPO2 = (

double)row[5];Mesure[counter] = MESURE;

Pas[counter] = PAS;

Fc[counter] = FC;

Fr[counter] = FR;

Spo2[counter] = SPO2;

}

Et voici mon code pour affiche sur le graph :

private
void CreerGraphique(
ZedGraphControl zgc){

// get a reference to the GraphPane
GraphPane myPane = zg1.GraphPane;

// Set the Titles
myPane.Title.Text =
" Fréquence Cardiaque";
myPane.XAxis.Title.Text =
" Temps";
myPane.YAxis.Title.Text =
" BPM";

// Make up some random data points

PointPairList list1 =
new
PointPairList();

for (counter = 0; counter < 20; counter++){

list1.Add(counter, Mesure[counter]);

}

LineItem Courbe1 = myPane.AddCurve(
"Freq. Card.", list1,
Color.Blue,
SymbolType.Diamond);myPane.Chart.Fill =

new
Fill(
Color.BlueViolet,
Color.FromArgb(255, 255, 255), 180F);myPane.Fill =

new
Fill(
Color.FromArgb(250, 250, 255));zg1.AxisChange();

}

Merci d'avance
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 4 mars 2008 à 00:19
3
Merci
Oublie pas zg1.Invalidate() pour forcer l'evenement paint et ca devrait régler ton probleme.

Merci bubbathemaster 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de bubbathemaster
Meilleure réponse
lemmingperceval 128 Messages postés mardi 18 décembre 2007Date d'inscription 2 août 2009 Dernière intervention - 4 mars 2008 à 14:19
3
Merci
Après:
zg1.AxisChange();

Merci lemmingperceval 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de lemmingperceval
k3ti0 17 Messages postés mercredi 5 septembre 2007Date d'inscription 7 mai 2008 Dernière intervention - 4 mars 2008 à 09:31
0
Merci
le zg1.Invalidate()  il faut que je le place ou  pour etre sur que ca fonctionne.

Merci de ta réponse
Commenter la réponse de k3ti0
k3ti0 17 Messages postés mercredi 5 septembre 2007Date d'inscription 7 mai 2008 Dernière intervention - 4 mars 2008 à 20:10
0
Merci
j'ai essayé de mettre zg1.Invalidate(); après lezg1.AxisChange(); mais j'ai toujours rien dans mon graphique.J'ai testé les valeurs de mes différentes variables dans des labels  elles s'affichent bien .

Je dois avoir un probleme dans mon code que je vois pas.
Commenter la réponse de k3ti0
lemmingperceval 128 Messages postés mardi 18 décembre 2007Date d'inscription 2 août 2009 Dernière intervention - 4 mars 2008 à 20:15
0
Merci
Sinon essaie peut-être refresh() à la place d'invalidate, des fois invalidate met trop de temps à être repeint.
Commenter la réponse de lemmingperceval
k3ti0 17 Messages postés mercredi 5 septembre 2007Date d'inscription 7 mai 2008 Dernière intervention - 4 mars 2008 à 20:21
0
Merci
non plus ça marche pas je pense que ça doit venir de mon code enfin je sais pas je suis un peu perdu la.
Commenter la réponse de k3ti0
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 4 mars 2008 à 21:34
0
Merci
Non non la doc pécise qu'il faut Invalidate pour refresh un graph.
Commenter la réponse de bubbathemaster
k3ti0 17 Messages postés mercredi 5 septembre 2007Date d'inscription 7 mai 2008 Dernière intervention - 5 mars 2008 à 08:40
0
Merci
je viens de me rendre compte d'un truc j'ai testé mes variables  MESURE, PAS, FC, FR et SPO2 dans des labels , elles retournent bien quelques choses mais quand je testes mon tableau de ces variables mon label affiche toujours zéro.
Je ne comprends pas pourquoi.
Commenter la réponse de k3ti0
k3ti0 17 Messages postés mercredi 5 septembre 2007Date d'inscription 7 mai 2008 Dernière intervention - 5 mars 2008 à 11:33
0
Merci
En fait le probleme venait que j'avais oublié de mettre CreerGraphique(zg1); dans mon timer donc le tableau vide normal c'est un peu con ^^  .
Maintenant j'ai un autre probleme qui devrait etre plus simple je voudrait que les points sur mon graphe soit relier  je sais pas comment on fait.
Merci de votre aide
Commenter la réponse de k3ti0
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 5 mars 2008 à 19:30
0
Merci
Heu... c'est le tout premier "sample" de la doc tracer une courbe hein.

http://zedgraph.org/wiki/index.php?title=Filled_Curve_Demo
Commenter la réponse de bubbathemaster
k3ti0 17 Messages postés mercredi 5 septembre 2007Date d'inscription 7 mai 2008 Dernière intervention - 9 mars 2008 à 18:54
0
Merci
merci pour la doc mais y a un truc que je ne comprends pas j'ai essayer de faire comme dans la doc ça marche les points sont reliés mais après quand je le mets dans mon timer ils ne sont plus reliés.
Sinon j'ai un autre problème j'ai mis le noms des graphes , les axes , et le noms de la courbes dans mon timer donc tout les secondes ça me recrées un noms de la courbes . J'aimerais faire l'initialisation de tous ces noms en dehors de mon timer mais j'y arrive pas.

Merci de votre aide
Commenter la réponse de k3ti0
k3ti0 17 Messages postés mercredi 5 septembre 2007Date d'inscription 7 mai 2008 Dernière intervention - 12 mars 2008 à 08:46
0
Merci
autre question j'aimerais que les axis de temps soit fixe une fenetre de 20 sec par exemple qui se décalerait .

Merci
Commenter la réponse de k3ti0

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.