IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Discussion :

Afficher des messages de la commande system dans un edit text


Sujet :

Interfaces Graphiques

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut Afficher des messages de la commande system dans un edit text
    Bonjour,

    Je trouve l´idée de cette discussion intéressante, j´aimerais juste savoir si quelqu'un´un aurait une autre idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    % Création de la zone texte éditable
    uicontrol('style','edit',...
         'units','normalized',...
         'visible','on',...
         'Max',10,...
         'callback',@message,...
         'tag','info',...
         'position',[0.12 0.29 0.1 0.1]);
     
    Maindata=guihandles(gcf);
    guidata(gcf,Maindata);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function [] = message(varargin)
     
    Maindata = guidata(gdbf);
    [~,result] = system('dir .');
    set(Maindata.info,'string',result);
     
    end
    Par exemple dans mon cas créer un edit text dans lequel à chaque fois que la command windows affiche une nouvelle donnée, quelle soit lu et affiché à travers l´edit text dans mon GUI. En effet ce dernier est en grand écran et je reçois souvent des messages important par la console.

    J´ai lu les propositions de la discussion ci dessous et comme je suis têtu je voudrais bien quand même essayer quelque chose. Merci !
    http://www.developpez.net/forums/d76...d-windows-gui/

    PS1 : Je suis conscient que mon code ne fonctionne pas je veux juste montrer ce que j ´aimerais faire.
    PS2 : J´ai essaye l´exemple de caroline mais voila ce que j´obtiens (Je précise que le code de caroline a été inséré pour ma part dans la function qui créer mon GUI:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Volume in drive C is System Volume
     Volume Serial Number is 
    14.02.2012  12:53    <DIR>          .
    14.02.2012  12:53    <DIR>          ..
    14.02.2012  12:21    <DIR>          120214_12h20_sadasd_0000
    03.02.2012  15:51               172 CANCEL.m
    ....
    24.01.2012  16:37    <DIR>          hardware
    24.01.2012  17:04    <DIR>          helper
    15.10.2008  15:23

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Le plus évident et facile serait de créer sa propre 'console' que de récupérer les informations contenus dans la command window.

    Par exemple, il suffirait de créer un edit text de la même forme (simple suggestion) que la commande window et d´y inscrire toutes les informations que l´on juge nécessaires dedans. On peut imaginer la chose suivante des que j´appuie sur un bouton qui trace une courbe on écrirait dans notre console plot à tel heure de ma courbe 1 etc...

    Pour ce qui est de récupérer les erreurs de programmation on peut toujours se servir du :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try
    % mon code
    catch e
    errordlg(e.message);
    return;
    PS : je n´ai pas essaye mais je pense que l´on peut évidement afficher le message d´erreur dans notre edit text précédemment créer

    PS2 : Si quelqu'un´un a une autre idée ...

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    PS : je n´ai pas essaye mais je pense que l´on peut évidement afficher le message d´erreur dans notre edit text précédemment créer
    Je viens d´essayer il n´y a aucun soucis !

    Juste 2 choses, il ne faut pas oublier de concaténer, sinon à chaque nouvel ajout seul votre dernier string sera affiché, doc cat:

    http://www.mathworks.de/help/techdoc/ref/cat.html

    Et pour ceux qui veulent se servir de leur console seulement comme d´un afficheur, j´entends par la qu´ils ne veulent rentrer aucune commande, il vaut mieux mettre la propriété Enable de l´edit sur inactive :


  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Citation Envoyé par junkie1986 Voir le message
    il ne faut pas oublier de concaténer, sinon à chaque nouvel ajout seul votre dernier string sera affiché, doc cat:
    Ou en utilisant un tableau de cellules...

    Pour répondre à ta première question, il existe une solution pour récupérer le contenu du Command Window en passant par Java.

    La solution est donnée dans le livre de Yair Altman : Undocumented Secrets of Matlab-Java Programming (page 484)

    Par contre, je ne suis pas sûr que ce soit réellement une bonne pratique dans ce cas précis.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Merci DUT pour ta réponse je vais voir si je peux mettre la main sur ce bouquin.

    J´ai un petit soucis au niveau de la console j´aimerais que lorsque un message d´erreur s´affiche sur cette dernière que ce dernier soit afficher en rouge.
    L´affichage se fait au travers d´un objet edit, pour modifier la couleur j´utilise la propriété :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'ForegroundColor',[1 0 0]
    Mais le problème est que touts les anciens messages déjà présent s´affiche également en rouge.

    Quelqu'un´un aurait il une idée pour ne modifier que la couleur que du message d´erreur ?

    Merci !

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Tu peux t'inspirer de ceci : HTML support in Matlab uicomponents (encore et toujours Yair Altman)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Ou en utilisant un tableau de cellules...
    Je voulais essayer de concatener non plus avec la fonction cat mais avec un tableau de cellules tout en utilisant le lien http://undocumentedmatlab.com/blog/h...-uicomponents/ envoyé par DUT

    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
    31
    32
    33
    34
    35
    36
    37
    38
    function Console()
     
    figure('Position',[400 400 894 420]);
    %% Création de la zone texte éditable
    uicontrol('style','list',...
        'units','normalized',...
        'HorizontalAlignment','left',...
        'visible','on',...
        'FontSize',13,...
        'Enable','inactive',...
        'BackgroundColor',[1 1 1],...
        'Max',2,...
        'tag','Fenetre',...
        'position',[0.04 0.12 0.23 0.2]);
     
     
    uicontrol('style','pushbutton',...
        'units','normalized','Position',[0.04 0.8 0.23 0.1],'String','No Problem','Callback',@Aucune_erreur);
     
    uicontrol('style','pushbutton',...
        'units','normalized','Position',[0.04 0.6 0.23 0.1],'String','Problem','Callback',@Erreur);
     
     
    set(findobj('Tag','Fenetre'),'String',{datestr(now) 'Start'});
     
     
         function Nouvelle_entree(Nouvelle_ligne)
            set(findobj('Tag','Fenetre'),'string',[Nouvelle_ligne {get(findobj('Tag','Fenetre'),'string')}]);
         end
     
        function Aucune_erreur(obj,event)
            Nouvelle_entree({datestr(now) 'Aucune erreur'});
        end
     
        function Erreur(obj,event)
            Nouvelle_entree({datestr(now) '<HTML><FONT color="red">Erreur</Font></html>'});
        end
    end
    Après essais j´obtiens dans ce cas ce message d´erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Error using set
    Cell array of strings may only contain string and numeric matrices
     
    Error in Console/Nouvelle_entree (line 28)
            set(findobj('Tag','Fenetre'),'string',[Nouvelle_ligne {get(findobj('Tag','Fenetre'),'string')}]);
     
    Error in Console/Aucune_erreur (line 32)
            Nouvelle_entree({datestr(now) 'Aucune erreur'});
     
    Error while evaluating uicontrol Callback
    Je précise également que si je modifie cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(findobj('Tag','Fenetre'),'string',[Nouvelle_ligne {get(findobj('Tag','Fenetre'),'string')}]);
    par celle la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(findobj('Tag','Fenetre'),'string',[get(findobj('Tag','Fenetre'),'string') Nouvelle_ligne]);
    Je me retrouve avec ce message d´erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Error using horzcat
    CAT arguments dimensions are not consistent.
     
    Error in Console/Nouvelle_entree (line 27)
            set(findobj('Tag','Fenetre'),'string',[get(findobj('Tag','Fenetre'),'string') Nouvelle_ligne]);
     
    Error in Console/Erreur (line 35)
            Nouvelle_entree({datestr(now) '<HTML><FONT color="red">Erreur</Font></html>'});
    Alors que j´arrive parfaitement à concaténer dans ce cas la

    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
    31
    32
    33
    34
    35
    36
    37
    38
    function Console()
     
    figure('Position',[400 400 894 420]);
    %% Création de la zone texte éditable
    uicontrol('style','list',...
        'units','normalized',...
        'HorizontalAlignment','left',...
        'visible','on',...
        'FontSize',13,...
        'Enable','inactive',...
        'BackgroundColor',[1 1 1],...
        'Max',2,...
        'tag','Fenetre',...
        'position',[0.04 0.12 0.23 0.2]);
     
     
    uicontrol('style','pushbutton',...
        'units','normalized','Position',[0.04 0.8 0.23 0.1],'String','No Problem','Callback',@Aucune_erreur);
     
    uicontrol('style','pushbutton',...
        'units','normalized','Position',[0.04 0.6 0.23 0.1],'String','Problem','Callback',@Erreur);
     
    A = {datestr(now) 'Start'} ;
    set(findobj('Tag','Fenetre'),'String',A);
     
     
         function Nouvelle_entree(Nouvelle_ligne)
            set(findobj('Tag','Fenetre'),'string',[Nouvelle_ligne A]);
         end
     
        function Aucune_erreur(obj,event)
            Nouvelle_entree({datestr(now) 'Aucune erreur'});
        end
     
        function Erreur(obj,event)
            Nouvelle_entree({datestr(now) '<HTML><FONT color="red">Erreur</Font></html>'});
        end
    end
    Mais je suis contraint ici de toujours concatener avec l´ancienne ligne et non avec les nouvelles.
    Quelqu´un aurait il une idee ?
    Merci!

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Pour ce genre d'erreur, pense à utiliser des breakpoints et décomposer les lignes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    set(findobj('Tag','Fenetre'),'String',{datestr(now) ; 'Start'});
    
    
         function Nouvelle_entree(Nouvelle_ligne)
            set(findobj('Tag','Fenetre'),'string',[Nouvelle_ligne ; get(findobj('Tag','Fenetre'),'string')]);
         end
    
        function Aucune_erreur(obj,event)
            Nouvelle_entree({datestr(now) ; 'Aucune erreur'});
        end
    
        function Erreur(obj,event)
            Nouvelle_entree({datestr(now) ; '<html><font color="red">Erreur</font></html>'});
        end

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Merci Winjerome,

    J´avais egalement essayer ce type de concaténation mais j´avais oublié d´ajouter le ; à ces lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set(findobj('Tag','Fenetre'),'String',{datestr(now) ; 'Start'});
    Nouvelle_entree({datestr(now) ; 'Aucune erreur'});
    Nouvelle_entree({datestr(now) ; '<html><font color="red">Erreur</font></html>'});
    D´ou le fait que j´obtenais par ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Error using vertcat
    CAT arguments dimensions are not consistent.
     
    Error in Console/Nouvelle_entree (line 27)
            set(findobj('Tag','Fenetre'),'string',[Nouvelle_ligne ; get(findobj('Tag','Fenetre'),'string')]);
     
    Error in Console/Erreur (line 35)
            Nouvelle_entree({datestr(now)  '<html><font color="red">Erreur</font></html>'});
    Pour ce genre d'erreur, pense à utiliser des breakpoints et décomposer les lignes
    Je m´en suis servis mais j´ai réussi à passer a coté

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher des messages texte avec hyperliens dans un carroussel
    Par billybobbonnet dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 27/08/2014, 15h30
  2. Réponses: 2
    Dernier message: 09/04/2010, 09h39
  3. afficher des messages en couleur dans la console
    Par taha1 dans le forum Langage
    Réponses: 4
    Dernier message: 30/06/2009, 10h57
  4. Comment afficher un chemin d'accés de fichier dans un edit text?
    Par rakinetak dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 18/08/2008, 10h44
  5. Réponses: 5
    Dernier message: 07/06/2006, 12h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo