Salut,
J'ai créé un petit script pour me permettre de visualiser les données acquises à l'aide d'un arduino et quelques capteurs. Les données s'affiche tant que je ne presse pas la lettre 'q' (abréviation pour quitter) auquel cas le script envoie un "break". Je lance le script, les données s'affichent, je presse 'q' et le script s'arrête. Tout fonctionne donc ! Je relance le script et malheureusement à la deuxième exécution la boucle while s'arrête après la première itération. En effet matlab garde en mémoire le fait que j'ai appuyer sur 'q' lors de la première exécution. Je suppose que la variable "eventDat.key" n'est pas réinitialiser malgré un "clear all". Je ne sais donc pas comment faire pour faire disparaître toute trace de mes anciennes interactions avec le clavier !
Le script principal (simplifié):
et la fonction key_pressed_fcn:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 %INITIALIZATION arduino = serial('COM3','BaudRate',9600); %parameter of serial communication fopen(arduino); %open serial communication key = [];%KeyBoard Character initialization fig = figure; set(fig,'KeyPressFcn', @key_pressed_fcn); while(1) %get new data ... %plot data ... %GET KeyBoardCharacter key = getappdata(0,'key'); if key == 'q' break end %Incrementation ... end close(fig) fclose(arduino);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function key_pressed_fcn(fig_obj,eventDat) setappdata(0, 'key',0); key = eventDat.key; if exist('key','var') setappdata(0, 'key', key); end
Partager