FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Simuler l’appui de n’importe quelle touche.
par papydall Hier à 23:54

» Le Forum est en vacances.
par JL35 Hier à 21:20

» Une autre façon de terminer une application.
par JL35 Mar 22 Aoû 2017 - 14:27

» Compilateur FBPano
par Mike Lun 21 Aoû 2017 - 23:17

» Pb 20 (en analyse): plantage à l'appel d'un SUB
par Jack Lun 21 Aoû 2017 - 21:58

» Pb 19 (en analyse): libellé d'erreur dans des IF imbriqués
par Jack Lun 21 Aoû 2017 - 21:55

» Copier / coller du texte à partir de la fenêtre de commandes
par jean_debord Lun 21 Aoû 2017 - 9:46

» COMPILATEUR V 0.9 beta 8 du 18 aout 2017
par papydall Lun 21 Aoû 2017 - 5:01

» Mettre en windows en veille
par papydall Lun 21 Aoû 2017 - 4:15

» Stretch_on ne stretch plus...
par papydall Dim 20 Aoû 2017 - 15:22

» Pb 18 (en analyse): RESTORE_LABEL avec DATA à la fin
par Jack Dim 20 Aoû 2017 - 13:21

» Problème de traitement des opérateurs avec le compilateur.
par Pedro Alvarez Sam 19 Aoû 2017 - 20:01

» Pb 17 (résolu): ITEM_SELECT ne fonctionne pas
par Jack Jeu 17 Aoû 2017 - 19:26

» un nouveau editeur panobasic
par Jean Claude Jeu 17 Aoû 2017 - 10:18

» Le compilateur.
par Pedro Alvarez Jeu 17 Aoû 2017 - 8:36

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Un minuteur

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
JL35



Nombre de messages : 5928
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Un minuteur   Mar 22 Avr 2014 - 17:53

Le problème (déjà évoqué dans le post 'Feux de signalisation'): je lance un Execute_Wait qui met beaucoup de temps à s'exécuter (plusieurs minutes) et pendant ce temps il ne se passe rien à l'écran, ce qui est un peu... angoissant.
Il y a bien l'affichage du feu orange (voir à côté), mais c'est tout aussi statique.

Alors j'ai fait un petit exécutable indépendant: Minuteur.exe, qui affiche l'écoulement du temps sous la forme mm:ss
Cet exécutable est appelé par une Sub Minuteur() du programme principal qui le lance avant l'Execute_wait, et l'arrête à la sortie.
Pendant tout la durée de l'exécution du programme appelé, le décompte du temps est affiché.

L'exécutable indépendant, à compiler comme Minuteur.exe:
Code:
' Minuteur
DIM x%,y%,w%,h%,td%,t%,m%,s%,d%,a$,f$
f$ = "C:\TEMP\Fminut.txt"
IF FILE_EXISTS(f$) = 0 THEN TERMINATE
FILE_OPEN_READ 1, f$
    FILE_READLN 1,a$: x% = VAL(a$)
    FILE_READLN 1,a$: y% = VAL(a$)
FILE_CLOSE 1
w% = 220: h% = 86
TOP 0,y%: LEFT 0,x%: WIDTH 0,w%: HEIGHT 0,h%: BORDER_HIDE 0
COLOR 0,255,255,0
FONT_NAME 0,"Lucida Console": FONT_SIZE 0,48: FONT_BOLD 0: ' PRINT_TARGET_IS 1
td% = 3600*VAL(LEFT$(TIME$,2))+60*VAL(MID$(TIME$,4,2))+VAL(RIGHT$(TIME$,2))
WHILE FILE_EXISTS(f$) = 1
    t% = 3600*VAL(LEFT$(TIME$,2))+60*VAL(MID$(TIME$,4,2))+VAL(RIGHT$(TIME$,2))
    d% = t%-td%:     d% = d%-INT(d%/3600)
    m% = INT(d%/60): s% = d%-60*m%
    a$ = RIGHT$("0"+STR$(m%),2)+":"+RIGHT$("0"+STR$(s%),2)
    PRINT_LOCATE 10,13: PRINT a$
    WAIT 1000
END_WHILE
TERMINATE
La sub d'appel, à insérer dans le programme principal:
Code:
SUB Minuteur(fct%,x%,y%)
' Affichage d'un minuteur indépendant en minutes:secondes en x%,y% de l'écran
' fct%=1: lancement, fct%=0: arrêt
IF fct% = 1
    FILE_OPEN_WRITE 1,"C:\TEMP\Fminut.txt"
        FILE_WRITELN 1,STR$(x%): FILE_WRITELN 1,STR$(y%)
    FILE_CLOSE 1
    EXECUTE "C:\PANORAMIC\Minuteur.exe": ' programme d'affichage du minuteur
ELSE
    FILE_DELETE "C:\TEMP\Fminut.txt": ' arrêt du minuteur
END_IF
END_SUB
C'est tout simple et un peu gadget, mais ça m'ennuyait de perdre complètement la main pendant l'exécution de l'execute_wait.

NB les chemins sont à adapter, notamment le chemin de l'exécutable Minuteur.exe dans la sub.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5849
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Un minuteur   Mar 22 Avr 2014 - 18:12

Pas mal et ça peut donner des idées.
En fait c'est le début de la programmation multi taches en temps partager.
Si Nardo était là, il pourrait nous faire une petite théorie la dessus, mais bon, si on arrive à synchroniser plusieurs exe, ça permet d'executer un deuxième programme quand le premier doit attendre.
Avec les fonctions de la DLL de Klaus, on pourrait imaginer par exemple que le programme externe vienne écrire quelque chose dans la fenêtre du programme qui doit attendre.
Enfin ce n'est qu'une idée, mais je pense qu'elle est assez réaliste. Il faut juste que le programme appelant envoit le handle de la fenêtre graphique dans lequel le programme appelé doit écrire.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Un minuteur   Mar 22 Avr 2014 - 18:23

KGF.dll a des fonctions d'envoi et de réception de messages entre programmes Panoramic. On peut très bien envisager une communication pour synchroniser deux ou plusieurs programmes. Si vous êtes en manque de protocoles de communication, je peux en fournir - c'est une longue habitude.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5849
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Un minuteur   Mar 22 Avr 2014 - 18:44

Je ne vais pas diverger du minuteur sur ce post, mais c'est vrai que je pense que l'on ne l'utilise pas assez dans nos programmes. Bon il faut dire que ce sont pour des usages spécifiques, mais il y a des tas de programmes ou une masse de calcul doivent être fait (par exemple pour la 3D, pour préparer des images, etc ...) et rien n'oblige à avoir une fenêtre figée si on utilise ce procédé de programme externe qui viendrait écrire sur la fenêtre du programme 'bloqué' par une opération dont le résultat est attendu avant de continuer.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Un minuteur   

Revenir en haut Aller en bas
 
Un minuteur
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» minuteur
» [Chatbox] Ouverte de telle heure à telle heure
» Probleme veille prolongée
» Nouveau sur le forum....
» Arret automatique de la bbox, possible ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Vos sources, vos utilitaires à partager-
Sauter vers: