Zed graph+timer

Résolu
k3ti0 Messages postés 17 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 7 mai 2008 - 3 mars 2008 à 17:46
k3ti0 Messages postés 17 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 7 mai 2008 - 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

12 réponses

bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
4 mars 2008 à 00:19
Oublie pas zg1.Invalidate() pour forcer l'evenement paint et ca devrait régler ton probleme.
3
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
4 mars 2008 à 14:19
Après:
zg1.AxisChange();
3
k3ti0 Messages postés 17 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 7 mai 2008
4 mars 2008 à 09:31
le zg1.Invalidate()  il faut que je le place ou  pour etre sur que ca fonctionne.

Merci de ta réponse
0
k3ti0 Messages postés 17 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 7 mai 2008
4 mars 2008 à 20:10
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
4 mars 2008 à 20:15
Sinon essaie peut-être refresh() à la place d'invalidate, des fois invalidate met trop de temps à être repeint.
0
k3ti0 Messages postés 17 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 7 mai 2008
4 mars 2008 à 20:21
non plus ça marche pas je pense que ça doit venir de mon code enfin je sais pas je suis un peu perdu la.
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
4 mars 2008 à 21:34
Non non la doc pécise qu'il faut Invalidate pour refresh un graph.
0
k3ti0 Messages postés 17 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 7 mai 2008
5 mars 2008 à 08:40
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.
0
k3ti0 Messages postés 17 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 7 mai 2008
5 mars 2008 à 11:33
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
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
5 mars 2008 à 19:30
Heu... c'est le tout premier "sample" de la doc tracer une courbe hein.

http://zedgraph.org/wiki/index.php?title=Filled_Curve_Demo
0
k3ti0 Messages postés 17 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 7 mai 2008
9 mars 2008 à 18:54
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
0
k3ti0 Messages postés 17 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 7 mai 2008
12 mars 2008 à 08:46
autre question j'aimerais que les axis de temps soit fixe une fenetre de 20 sec par exemple qui se décalerait .

Merci
0
Rejoignez-nous