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

Scilab Discussion :

Erreur dans l'exécution des mes fichiers


Sujet :

Scilab

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Erreur dans l'exécution des mes fichiers
    Bonjour a tous.

    je vous remercie d'avant pour le soutien.

    J'ai crée 3 fichiers sur scilab. Le premier fichier est le " Startup.sce" qui va appeler les deux autres qui sont des fonctions (Fig_Config.sci) et (Listing_Modele.sci) .


    Vous pouvez vous posez la question pourquoi tous ces fichiers, en fait mon objectif est de faire un IHM donc je veux utiliser les fichiers séparés pour faire cela.

    Le contenu tu fichier "Startup.sce" est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    clc
    getd()
    [H,hfig]=get_function_path(Fig_Config.sci);
    Le contenu tu fichier "Fig_Config.sci" est :

    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
    function varargout = Fig_Config(varargin)
     
        getd();
        H=get_function_path(Listing_Modele.sci);
        // Récupération de la taille de l'écran 
        taille=get(0, "screensize_px");
     
        // Création de la figure 
        // ===========================
        // Dimension de la figure en pixels
        longueur=750;
        hauteur=400;
        // Création de la figure longueur hauteur
        hfig= figure();
        fig_color = [0.831 0.816 0.784];
        // Définition des attributs
    	set(hfig,'color_map',fig_color,...
                'menubar','none',...
                'menubar_visible','off',...
                'toolbar', 'none',...
                'toolbar_visible', 'off',...
                'figure_position' ,[(taille(3)-longueur)/2-40 (taille(4)-(hauteur))/4-36],...
                'figure_name',['Config'],...
                'tag','fig_Config',...
                'dockable', 'off',...
                'resize', 'off');
    endfunction
    Le contenu tu fichier "Listing_Modele.sci" est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function varargout = Listing_Modele(varargin)
       // Nom abrégé des modeles
        H.ListeModele = {'Model1','Model2'};
        // Défini la disponibilité des modèle (on : disponible ; off : non disponible)
        H.Modelesused  = {'off','on'};
        // Nom réel des modèles
        H.NomsModele  = {'Machine','Pompe'};
    endfunction
    Voici l'erreur qui s'affiche et je ne comprends pas d'ou viens le problème. j'ai besoin de l'aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    !--error 21 
    Index invalide.
    at line       9 of function Listing_Modele called by :  
    at line       4 of function Fig_Config called by :  
    [H,hfig]=get_function_path(Fig_Config.sci);
    at line       3 of exec file called by :    
    exec('C:\Users\Desktop\essai\Startup.sce', -1)
    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    A mon avis, tu n'as pas bien compris l'utilité de la fonction get_function_path

    Voici un début de correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    clc
    getd
    hfig = Fig_Config()
    et

    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
    function hfig = Fig_Config
     
        // Récupération de la taille de l'écran 
        taille=get(0, "screensize_px");
     
        // Création de la figure 
        // ===========================
        // Dimension de la figure en pixels
        longueur=750;
        hauteur=400;
        // Création de la figure longueur hauteur
        hfig= figure();
        fig_color = [0.831 0.816 0.784];
        // Définition des attributs
        set(hfig,'color_map',fig_color,...
        'menubar','none',...
        'menubar_visible','off',...
        'toolbar', 'none',...
        'toolbar_visible', 'off',...
        'figure_position' ,[(taille(3)-longueur)/2-40 (taille(4)-(hauteur))/4-36],...
        'figure_name',['Config'],...
        'tag','fig_Config',...
        'dockable', 'off',...
        'resize', 'off');
    endfunction
    Par contre, je ne comprends pas le rôle de la fonction Listing_Modele ?
    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)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Modification du code et en fonction de tes explication
    Bonjour

    Merci pour tes réponses

    je vais essayer et revenir vers toi

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Pour la suite de mon programme.
    Bonjour
    Merci pour tes conseils le programme fonctionne mais j’ai un nouveau problème.
    Pour expliquer je donne les codes.

    Le contenu tu fichier "Startup.sce" est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    clc
    getd
    [H,hfig]=Fig_Config.sci;
    Le contenu tu fichier "Fig_Config.sci" est :

    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
    function [H, hfig]=Fig_Config(varargin)
        getd;
       H=Listing_Modele.sci;
        // Récupération de la taille de l'écran 
     
        taille=get(0, "screensize_px");
     
        // Création de la figure 
        // ===========================
        // Dimension de la figure en pixels
        longueur=750;
        hauteur=400;
        // Création de la figure longueur hauteur
     
        fig_color = [0.831 0.816 0.784];
        // Définition des attributs
        hfig= figure('color_map',fig_color,...
                'figure_id',1,...
                'menubar','none',...
                'menubar_visible','on',...
                'toolbar', 'none',...
                'toolbar_visible', 'off',...
                'figure_position' ,[(taille(3)-longueur)/2-40 (taille(4)-(hauteur))/4-36],...
                'figure_name',['Configuration Simulation '],...
                'tag','fig_ConfigSimulation',...
                'dockable', 'off',...
                'resize', 'off');
     
    //	H.Fichier = uimenu(hfig,'Label','&Fichier','callback',['Menu_ConfigSimulation(''Find_Launch'',' num2str(gcf) ')']);
    //		H.Launch  = uimenu(H.Fichier,'Label','&Nouvelle Simulation');
    //			for i = 1:max(size(H.NomsModele))
    //				eval(['H.Launch_Mod' num2str(i) '=uimenu(H.Launch,''Label'',',...
    //							'''Modele ' H.NomsModele(i) ''',''visible'',''' H.Modelesused(i)]);
    //			end
    endfunction
    Le contenu tu fichier "Listing_Modele.sci" est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function [H]=Listing_Modele(varargin)
       // Nom abrégé des modeles
        H.ListeModele = {'Model1','Model2'};
        // Défini la disponibilité des modèle (on : disponible ; off : non disponible)
        H.Modeleused  = {'off','on'};
        // Nom réel des modèles
        H.NomsModele  = {'Machine','Pompe'};
    endfunction
    J’ai crée un nouveau fichier qui est « Menu_ConfigSimun.sci » ce fichier me permettra dans la suite de configurer l’IHM.
    Je crée plusieurs fichier car j’ai projet immense avec beaucoup de fichier donc j’utilise des différents fichiers et chaque fichier a un role dans l’IHM.

    Le contenu du fichier «Menu_ConfigSimun.sci » est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function varargout=Menu_ConfigSimun(varargin)
     
        function Find_Launch(h, varargin)                         // 
            hfig = h;
            H = get(hfig,'user_data');
        endfunction
     
    endfunction
    il aura plusieurs fonctions dans le fichier ‘Menu_ConfigSimun.sci ‘
    je souhaite ajouter cette partie de code suivant dans le fichier Fig_Config.sci" (il est déjà en commentaire) . Ce code est ce que j’ai fait sur matlab. J’ai du mal à faire la même chose sur scilab donc j’ai besoin de l’aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    H.Fichier = uimenu(hfig,'Label','&Fichier','callback',['Menu_ConfigSimun(''Find_Launch'',' num2str(gcf) ')']);
        H.Launch  = uimenu(H.Fichier,'Label','&Nouvelle Simulation');
            for i = 1:max(size(H.NomsModele))
                eval(['H.Launch_Mod' num2str(i) '=uimenu(H.Launch,''Label'',',...
                            '''Modele ' H.NomsModele(i) ''',''visible'',''' H.Modelesused(i)]);
            end
    J’ai des difficultés sur « eval » et « num2str(gcf) » en effet sur matlab cette variable est le handle de la figure « hfig » et c’est la variable d’entrée de ma fonction « ''Find_Launch' » qui est dans Menu_ConfigSimun.sci

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Le dernier bloc de code devrait plutôt ressembler à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    H.Fichier = uimenu(hfig, 'Label', '&Fichier', 'callback', 'Menu_ConfigSimun(''Find_Launch'',' + string(hfig.figure_id) + ')');
     
    H.Launch  = uimenu(H.Fichier, 'Label', '&Nouvelle Simulation');
     
    for i = 1:max(size(H.NomsModele))
        H.Launch_Mod(i) = uimenu(H.Launch, 'Label', 'Modele ' + H.NomsModele(i), 'Visible', H.Modelesused(i));
    end
    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)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Le nouveau message d'erreur
    Bonjour Jérôme

    je tiens particulièrement à te remercie beaucoup pour ton aide.
    La dernière partie que tu as proposé fonctionne sauf la boucle "for". voici l'erreur qui s'affiche.


    Voici le nouveau contenu du fichier 'Fig_Config.sci'

    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
    function [H,hfig] = Fig_Config(varargin)
        getd;
       H=Listing_Modele.sci;
        // Récupération de la taille de l'écran 
     
        taille=get(0, "screensize_px");
     
        // Création de la figure 
        // ===========================
        // Dimension de la figure en pixels
        longueur=750;
        hauteur=400;
        // Création de la figure longueur hauteur
     
        fig_color = [0.831 0.816 0.784];
        // Définition des attributs
    	hfig= figure('BackgroundColor',fig_color,...
                'figure_id',1,...
                'menubar','none',...
                'menubar_visible','on',...
                'toolbar', 'none',...
                'toolbar_visible', 'off',...
                'figure_position' ,[(taille(3)-longueur)/2-40 (taille(4)-(hauteur))/4-36],...
                'figure_name',['Configuration Simulation '],...
                'tag','fig_ConfigSimulation',...
                'dockable', 'off',...
                'resize', 'off');
     
                H.Fichier = uimenu(hfig, 'Label', '&Fichier', 'callback', 'Menu_ConfigSimun(''Find_Launch'',' + string(hfig.figure_id) + ')');
     
                H.Launch  = uimenu(H.Fichier, 'Label', '&Nouvelle Simulation');
     
                for i = 1:max(size(H.NomsModele))
                    H.Launch_Mod(i) = uimenu(H.Launch, 'Label', 'Modele ' + H.NomsModele(i), 'Visible', H.Modelesused(i));
                end
    endfunction

    Le message d'erreur a l’exécution de tout le programme


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    !--error 21 
    Index invalide.
    at line      34 of function Fig_Config called by :  
    [H,hfig]=Fig_Config.sci;
    at line       3 of exec file called by :    
    exec('C:\Users\Dratrao\Desktop\projet\Startup.sce', -1)
    Cependant si je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i = 1:max(size(H.NomsModele))
                    H.Launch_Mod(i) = uimenu(H.Launch, 'Label', 'Modele ' + H.NomsModele(i), 'Visible', H.Modelesused(i));
                end
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     for i = 1:max(size(H.NomsModele))
                    H.Launch_Mod = uimenu(H.Launch, 'Label', 'Modele ' + H.NomsModele(i), 'Visible', H.Modelesused(i));
                end
    le code fonctionne.

    mais le handle de H.Launch_Mod n'est plus bon pour mon projet car il prend en compte que le dernier modèle.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Ajoute ceci juste avant la boucle for-end :

    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)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Merci pour ton aide
    Bonjour Jérôme

    Le code fonctionne avec tes conseils. Je ne manquerai pas de revenir vers toi dès que j'ai problème. Encore Mille merci

    Cordialement

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Erreur lors du callback dans la fonction
    Bonjour
    j'ai une erreur lors d'un callback sur un IHM que je fais.

    Pour faciliter la compréhension je donne les codes de mes différents fichier.

    Le contenu du fichier "Startup.sce" est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    clc
    getd
    [H,hfig]=Fig_Config.sci;
    Le contenu du fichier "Listing_Modele.sci" est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function [H] = Listing_Modele(varargin)
       // Nom abrégé des modeles
        H.ListeModele = {'Model1','Model2'};
        // Défini la disponibilité des modèle (on : disponible ; off : non disponible)
        H.Modelesused  = {'on','on'};
        // Nom réel des modèles
        H.NomsModele  = {'Machine','Pompe'};
    endfunction
    Le contenu du fichier "Fig_Config.sci" est :

    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
    39
    40
    41
    42
    43
    44
    function [H,hfig] = Fig_Config(varargin)
        getd;
       H=Listing_Modele.sci;
        // Récupération de la taille de l'écran 
     
        taille=get(0, "screensize_px");
     
        // Création de la figure 
        // ===========================
        // Dimension de la figure en pixels
        longueur=750;
        hauteur=400;
        // Création de la figure longueur hauteur
     
        fig_color = [0.831 0.816 0.784];
        // Définition des attributs
    	hfig= figure('BackgroundColor',fig_color,...
                'figure_id',1,...
                'menubar','none',...
                'menubar_visible','on',...
                'toolbar', 'none',...
                'toolbar_visible', 'off',...
                'figure_position' ,[(taille(3)-longueur)/2-40 (taille(4)-(hauteur))/4-36],...
                'figure_name',['Configuration Simulation '],...
                'tag','fig_ConfigSimulation',...
                'dockable', 'off',...
                'resize', 'off');
     
            set(hfig,'CloseRequestFcn',["Menu_ConfigSimun.sci"+"(""close""," + string(hfig.figure_id) + ')']); 
     
                H.Fichier = uimenu(hfig, 'Label', '&Fichier', 'callback', ["Menu_ConfigSimun.sci"+"(""Find_Launch""," + string(hfig.figure_id) + ')']);
     
                H.Launch  = uimenu(H.Fichier, 'Label', '&Nouvelle Simulation');
     
                H.Launch_Mod=list();
     
                for i = 1:max(size(H.NomsModele))
                    H.Launch_Mod(i) = uimenu(H.Launch, 'Label', 'Modele ' + H.NomsModele(i), 'Visible', H.Modelesused(i));
                end
     
                H.Quitter = uimenu(H.Fichier,'Label','&Quitter','tag','Quitter', 'callback',["Menu_ConfigSimun.sci"+"(""close""," + string(hfig.figure_id) + ')']);
     
     
    endfunction
    Le contenu du fichier «Menu_ConfigSimun.sci » est

    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
     function  varargout=Menu_ConfigSimun(varargin)
        funcprot(0)
        function Find_Launch(h,varargin)						 // 
           hfig.figure_id = h;
           H = get(scf(h),'user_data');
        endfunction
     
     
        function close(h,varargin)								 // >> Fonction de fermeture de la figure <<
     
        hfig.figure_id = h;
        H = get(scf(h),'user_data');
        // Demande de confirmation
        choix = messagebox("Confirmer la sortie de l''interface ?", "Fermer l''IHM", "question", ["Oui" "Non"], "modal");
     
        // Si l'on valide
        if choix==1 then
            delete(scf(h)); // Suppression de la figure
        end
        endfunction
     
    endfunction

    Lorsque je execute les deux callback suivant j'ai un message d'erreur. Pour moi je pense que l'appel du «Menu_ConfigSimun.sci » n'est pas correcte dans mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     set(hfig,'CloseRequestFcn',["Menu_ConfigSimun.sci"+"(""close""," + string(hfig.figure_id) + ')']);
    H.Quitter = uimenu(H.Fichier,'Label','&Quitter','tag','Quitter', 'callback',["Menu_ConfigSimun.sci"+"(""close""," + string(hfig.figure_id) + ')']);
    ces deux lignes sont dans le fichier "Fig_Config.sci" pour faire appel au fichier " Menu_ConfigSimun.sci"

    message d'erreur pour le callback "Quiter"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Menu_ConfigSimun.sci("close",1);if exists("%oldgcbo") then gcbo =
                                       !--error 250 
    L'extraction récursive n'est pas valide dans ce contexte.
    while executing a callback


    J'ai besoin de l'aide.

    Merci d'avance

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Voici une version corrigée :

    Startup.sce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    clc
    getd
    hfig = Fig_Config()
    Fig_Config.sci :
    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
    39
    40
    41
    42
    43
    function [H,hfig] = Fig_Config()
     
        H = Listing_Modele();
        // Récupération de la taille de l'écran 
     
        taille = get(0, "screensize_px");
     
        // Création de la figure 
        // ===========================
        // Dimension de la figure en pixels
        longueur=750;
        hauteur=400;
        // Création de la figure longueur hauteur
     
        fig_color = [0.831 0.816 0.784];
        // Définition des attributs
        hfig = figure('BackgroundColor',fig_color,...
        'figure_id',1,...
        'menubar','none',...
        'menubar_visible','on',...
        'toolbar', 'none',...
        'toolbar_visible', 'off',...
        'figure_position', [(taille(3)-longueur)/2-40 (taille(4)-(hauteur))/4-36],...
        'figure_name', ['Configuration Simulation '],...
        'tag', 'fig_ConfigSimulation',...
        'dockable', 'off',...
        'resize', 'off');
     
        set(hfig, 'CloseRequestFcn', ["Menu_ConfigSimun"+"(""close""," + string(hfig.figure_id) + ')']); 
     
        H.Fichier = uimenu(hfig, 'Label', '&Fichier', 'callback', ["Menu_ConfigSimun"+"(""Find_Launch""," + string(hfig.figure_id) + ')']);
     
        H.Launch  = uimenu(H.Fichier, 'Label', '&Nouvelle Simulation');
     
        H.Launch_Mod = list();
     
        for i = 1:max(size(H.NomsModele))
            H.Launch_Mod(i) = uimenu(H.Launch, 'Label', 'Modele ' + H.NomsModele(i), 'Visible', H.Modelesused(i));
        end
     
        H.Quitter = uimenu(H.Fichier, 'Label', '&Quitter', 'tag', 'Quitter', 'callback', ["Menu_ConfigSimun"+"(""close""," + string(hfig.figure_id) + ')']);
     
    endfunction
    Listing_Modele.sci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function H = Listing_Modele()
       // Nom abrégé des modeles
        H.ListeModele = {'Model1','Model2'};
        // Défini la disponibilité des modèle (on : disponible ; off : non disponible)
        H.Modelesused  = {'off','on'};
        // Nom réel des modèles
        H.NomsModele  = {'Machine','Pompe'};
    endfunction
    Menu_ConfigSimun.sci :

    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
    function Menu_ConfigSimun(action, fig_id)
     
        if strcmp(action, "close")==0 then
     
            hfig = get_figure_handle(fig_id)
     
            // Demande de confirmation
            choix = messagebox("Confirmer la sortie de l''interface ?", "Fermer l''IHM", "question", ["Oui" "Non"], "modal");
     
            // Si l'on valide
            if choix==1 then
                delete(hfig); // Suppression de la figure
            end
     
        elseif strcmp(action, "Find_Launch")==0 then
     
            hfig.figure_id = h;
            H = get(scf(h),'user_data');
     
        end
     
    endfunction
    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)

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 23
    Points : 18
    Points
    18
    Par défaut merci Pour ton aide
    Bonjour DUT

    je tiens a te remercie car le programme fonction avec tes modifications.

    Mais j'ai une question sur la fonction Pour moi la fonction scilab va garder en mémoire tous les noms des fonctions dès l'ouverture de l'IHM. Maintenant quand je vais travailler sur l'IHM avec les commandes : Est ce que si je fais des modifications sur les fonctions (alors que l'IHM est déjà ouverte) je suis obligé de tout recommencer afin que scilab ait en mémoire les bonnes variable des fonctions?

    Ma deuxième question est : Est ce qu'il existe une commande sur scilab qui permet dans ajouter des fichiers ou répertoire dans le path. Par exemple sur matlab on les commandes suivantes? "
    Encore merci pour ton aide

  12. #12
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Citation Envoyé par dratrao Voir le message
    Est ce que si je fais des modifications sur les fonctions (alors que l'IHM est déjà ouverte) je suis obligé de tout recommencer afin que scilab ait en mémoire les bonnes variable des fonctions?
    Que cherches-tu à faire exactement ?

    Citation Envoyé par dratrao Voir le message
    Ma deuxième question est : Est ce qu'il existe une commande sur scilab qui permet dans ajouter des fichiers ou répertoire dans le path.
    Tu peux créer un fichier scilab.ini dans le dossier SCIHOME et y mettre par exemple la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getd("dossier contenant les .sci de l'IHM")
    Ceci sera alors exécuté à chaque démarrage de Scilab.

    Plus d'informations :

    Voir aussi cette vidéo :



    Sur un projet plus conséquent, tu peux ensuite créer un module : Writing Scilab Extensions
    Mais c'est un peu plus compliqué à gérer.
    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)

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 23
    Points : 18
    Points
    18
    Par défaut Probleme avec la fonction" save"
    Avec tous tes conseils et ton aide j’ai beaucoup avancé dans l’élaboration de mon IHM. L’objectif de cet IHM est de pouvoir lancer plusieurs séries de simulation. Dans ce cas j’initialise plusieurs modèles (c'est-à-dire sa modèle qui va être simulé). Mais j’ai un problème avec l’utilisation de la fonction « save ».

    Mon objectif est de sauvegarder mes variables qui sont dans le workspace. J’ai un modèle à plusieurs variables donc je ne peux citer chaque variable comme suite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    save('data_simu.data','Courant',……)
    Alors j’utilise le code
    Malheureusement le code à du mal dans les fonctions (la commande save est dans une fonction). En effet lorsque j’exécute mes simulations, sur la ligne scilab se bloque est reste figer. Alors je suis obligé d'utiliser "ctrl+alt+suppr" pour partir dans le gestionnaire de tache et arrêter tous. Alors que la simulation c'est bien passée, seule la commande save ne fonctionne pas.
    Quand je fais par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    save('data_simu.data','Courant',……)
    ou "courant" est le nom d'une variable du "xcos" il n' y a aucun problème. Comme j'ai plusieurs variables alors je ne peux pas lister tous. En plus l'IHM sera utiliser pas d'autre personne donc difficile de lister tous les variables.

    je souhaiterai enregistrer toutes les variables qui peuvent être dans le workspace.
    Mon objectif est de trouver un fichier de type « .mat » de Matlab pour utiliser après pour faire des plot, et autres analyse.
    Sur Matlab on peut utiliser les commandes suivantes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      save('data_simu.mat');
                evalin('base','load(''data_simu.mat'');');
    Je n'arrive pas a trouver l'equivalent sur scilab

    Le deuxième problème est la sauvegarde d'une configuration de l'IHM, dans le but de le charger après.
    Pour cela j'utilise le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    saveGui(hfig, "ConfigSimulation.data")
    La sauvegarde se pas bien, mais quand je fais

    je remarque que quand je vais loadGui, la figure est ouvert avec touts les onglet. mais quand je vais fais get(hfig,'user_data') j'obtiens un vecteur qui vide. je me demande si la commande saveGui prend en compte les "user_data" au moment de la sauvegarde. Il faut noter que hfig = get_figure_handle(fig_id)


    Ma troisème question est:

    Est ce qu'il existe une commande dans scilab qui permet d’écrire dans un fichier excel. j'ai vu la commande xlsread, mais je ne trouve pas pour l’écriture.

    Merci d'avance pour votre aide

Discussions similaires

  1. Réponses: 8
    Dernier message: 06/03/2008, 16h32
  2. Réponses: 1
    Dernier message: 03/10/2007, 14h39
  3. [OK] Erreur dans l'exécution d'un code de macro.
    Par Funcky222 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/09/2007, 21h35
  4. erreur dans l'exécution de Dlookup
    Par jessy212 dans le forum Access
    Réponses: 3
    Dernier message: 30/08/2006, 13h58

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