Bonjour à tous,
J'utilise un appareil pour récupérer des données (x,y) en continu. Ces données me permettent de tracer une courbe. En développant une interface graphique à la main (sans la fonction guide), j'arrive à gérer la connexion avec l'appareil et à tracer une courbe à un instant t. J'aimerai pouvoir gérer l'actualisation du plot de façon à suivre l'évolution de ma courbe en temps réel.
En parcourant le forum, j'ai pu lire que l'utilisation d'un timer pourrait répondre à mon besoin. J'ai essayé d'utiliser cette fonction en m'appuyant sur d'autres sujets tels que :
- La création d'un chronomètre
- Action en parallèle
- Utilisation de plusieurs timers
Mais je ne m'en sors pas du tout... J'aimerai que mon programme se déroule en 3 étapes:
- Connexion à l'appareil : ça j'y arrive
- Affichage de la courbe en "continu": utilisation du timer, là je coule...
- Enregistrement automatique de la courbe à t=0, t=5min, t=10min etc... : j'imagine qu'il faut aussi utiliser un timer...
Concernant l'enregistrement, j'utilise la toolbar de la figure ('Save'). Du coup j'enregistre toute l'interface graphique alors que j'aimerai avoir uniquement le graphique... Existe-il une option?
Mes questions pour l'utilisation du timersont donc:
- Où déclarer le timer?
- Comment le déclarer?
- Comment l'utiliser
Voici où j'en suis jusqu'à présent:
- Création de l'interface
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 fig = figure ('units','pixels',... 'position',[200 200 800 400],... 'toolbar','figure'); handles.courbe = axes('units','pixels',... 'position',[280 40 480 320], ... 'tag','axes1');- Déclaration
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 handles.timer = timer(... 'ExecutionMode','fixedRate',... 'Period',1,... 'TimerFcn', @update);- Utilisation
Je crée un bouton et la fonction START pour gérer le timer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 handles.start = uicontrol ('style','pushbutton',... 'units','pixels','position',[10 160 60 30],... 'string','START', 'BackgroundColor','g',... 'callback',@start);Puis je crée le timer et la fonction correspondante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 function start(obj,event) global appareil appareil = icdevice('Driver_de_l'appareil'); connect(appareil);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 handles.timer = timer(... 'ExecutionMode','fixedRate',... 'Period',1,... 'TimerFcn', @updateAppareil);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function updateAppareil (obj,event) global appareil abs = invoke(appareil, 'getValueX); ord = invoke(appareil, 'getValueY'); handles.courbe = plot(abs,ord); grid on, axis tight, hold on drawnow;
Merci de m'avoir lu.
Cordialement,
Arkenge
Partager