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é):


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);
et la fonction key_pressed_fcn:

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