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 :

Répétition d'un programme


Sujet :

Scilab

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 36
    Points : 33
    Points
    33
    Par défaut Répétition d'un programme
    Bonjour,

    J'ai un script, mon_script.sce, que j'appelle par une interface graphique,
    interface.sce :
    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
     
    function lancer_routine()
            check = checkbox.value
            xdel(winsid())
            exec('mon_script.sce', -1)
    endfunction
     
     
    f = figure("figure_name", "Menu",...
    "infobar_visible", "off",...
    "toolbar_visible", "off",...
    "dockable", "off",...
    "menubar", "none",...
    "Position",[400 200 50 50]);
     
     
    checkbox = uicontrol(f, "Position", [0 00 20 15],...
    "Style", "checkbox")
     
    lancer = uicontrol(f, "Position", [20 20 100 25], ...
        "Style", "pushbutton",...
        "FontSize", 11,...
        "String","Lancer", ...
        "callback", "lancer()");
    Mon_script.sce utilise la variable check.

    J’aimerais qu'à la fin, je puisse tout recommencer automatiquement, c'est à dire qu'il me relance interface.sce.

    Mais si a la fin du script je met , ca me réaffiche bien mon interface graphique, mais on ne peut plus relancer, on a une erreur 999, Le handle n'est pas ou n'est plus valide.


    J'ai évidement pensé à un while pour faire la répétition, mais le problème est que l'affichage de la fenêtre ne "pause" pas l’exécution du programme, et donc qu'on obtient juste une fenêtre qui se recharge en permanence...

    Pourriez vous m'aider ?

    Merci,
    Sayanel

  2. #2
    Membre à l'essai
    Femme Profil pro
    Docteur en Géologie
    Inscrit en
    Janvier 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Docteur en Géologie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 15
    Points : 16
    Points
    16
    Par défaut Solution?
    Bonjour,

    As-tu réglé ton problème depuis?

    Milka

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Bonjour,

    Non le problème n'est pas résolu. Je n'ai trouver aucun moyen de boucler totalement mon programme, à la fin de 'mon_script.sce', je suis toujours obligé de réexécuter manuellement...

    Toute les solutions que j'ai essayé ont eu soit des problème de handle, soit des problème du au fait que les figures ne sont pas modal, donc que le programme continu à s'exécuter.
    Je m'arrange comme ça, mais si quelqu'un à la solution ça m’intéresse

  4. #4
    Membre à l'essai
    Femme Profil pro
    Docteur en Géologie
    Inscrit en
    Janvier 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Docteur en Géologie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 15
    Points : 16
    Points
    16
    Par défaut Boucle
    Re,

    J'ai déjà créé ce type de programme qui faisait tourner mes calculs en boucle. Je devais faire 500 fois le programme... Dans un premier temps, je me suis retrouvée avec des soucis de matrices qui avaient toujours le même nom. Je vois qu'à aucun moment tu n'as pas inséré de petit "clear" pour effacer tes matrices réutilisée et qui pourraient ne plus avoir la même taille quand tu le fais tourner une deuxième fois?
    Et... Pourquoi ne pas faire une boucle for et faire juste avant un input pour demander à l'utilisateur combien de fois il compte faire tourner le programme? Juste une idée comme ça. Je n'utilise pas de fenêtre graphique. Je fais dans le brut

    Milka

  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 163
    Points
    53 163
    Par défaut
    Je ferais comme ceci :

    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
    function myfun(check)
        disp(check)
        sleep(1000)
    endfunction
     
    function lancer_routine()
        check = checkbox.value
        f = gcf();
        f.visible = "off"
        myfun(check);
        f.visible = "on"
    endfunction
     
    f = figure("figure_name", "Menu",...
    "infobar_visible", "off",...
    "toolbar_visible", "off",...
    "dockable", "off",...
    "menubar", "none",...
    "Position",[400 200 50 50]);
     
    checkbox = uicontrol(f, "Position", [0 00 20 15],...
    "Style", "checkbox")
     
    lancer = uicontrol(f, "Position", [20 20 100 25], ...
    "Style", "pushbutton",...
    "FontSize", 11,...
    "String","Lancer", ...
    "callback", "lancer_routine()");
    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
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 36
    Points : 33
    Points
    33
    Par défaut
    Milka-Universalis, le problème viens justement de l'interface graphique, sinon un while (ou un for) et c'est réglé. Mais le 'figure' n'est pas modal, donc pendant qu'il est affiché le programme tourne derrière, donc ça gâche tout^^


    Dut : ca marche \o/ . Effectivement, j'ai toujours essayer de relancer le programme, mais cacher la fenêtre et encore mieux, et on garde tout les paramètres précédents ce qui est parfait (en faisant bien attention a retirer tout les xdel(winsid()) qu'il y avait dans le script ; j'ai été obligé de réfléchir pour trouver le numéro de mes figures )
    Merci beaucoup

    Après, mais c'est du détail, j'appelle un script (exec(mon_script.sce)) est pas une fonction. Y a-t-il une différence fondamentale et importante, ou est-ce que ça revient au même que d’exécuter une fonction ?

  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 163
    Points
    53 163
    Par défaut
    La différence entre un script et une fonction vient surtout de la gestion des variables.

    Avec un script, les variables sont globales alors qu'avec une fonction, elles n'existent que localement à l'intérieur de la fonction (sauf pour les variables d'entrée et/ou de sortie)
    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)

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/02/2011, 12h58
  2. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  3. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  4. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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