Page 1 sur 1
Ouvrir un popup en script dans Vijeo Designer
Posté : 05 avr. 2017, 15:41
par Béryl
Salut les cyborgs !
Je me triture le neurone depuis quelques heures sur un problème que je ne comprends pas.
Je cherche à ouvrir une fenêtre popup en script sous Vijeo Designer 6.2.5.36. Je crée donc une fenêtre popup (SauveParam, au hasard).
Je lui crée un nouvel écran (ID 10005, mettons) qui m'affiche un rectangle avec dedans : "Sauvegarde des paramètres en cours...".
Et hop, dans le script je bidouille un truc dans ce genre :
Code : Tout sélectionner
...
case 8: //Sauvegarde paramètres installation
PopUpSauveParam.open(200,275);
PopUpSauveParam.show(true);
PopUpSauveParam.changePanel(10005);
int X=0,Y=0;
for (X=0;X<15;X++)
{
Affectations[X].write(Affectations_temp[X].getIntValue());
}
do
{
Y++; //petite pause permettant la prise en compte du changement des paramètres par le serveur
}
while (Y<100000);
PopUpSauveParam.close();
Xbt_sauv_param.write(true); //validation changement des paramètres pour le serveur
_CurPanelID.write(1); //basculement sur l'écran d'accueil
break;
... oui, c'est pour sauver des paramètres de process.
La pause, c'est à part (un Raspeberry Pi qui historise les changement de process).
Déjà, en simulation, j'ai qu'un rectangle noir qui s'affiche (de la taille de la fenêtre popup).
Et sur le Magélis (HMIGTO 6310), rien de tout, que dalle, nada. Après la courte pause, j'arrive sur l'écran d'accueil.
J'ai épluché la (maigre) doc en long, en large et en travers, rien à faire, j'y arrive pas
A vot' bon coeur m'sieurs dames !
Re: Ouvrir un popup en script dans Vijeo Designer
Posté : 05 avr. 2017, 16:28
par Béryl
Quelques précisions suite à mes recherches :
Le popup que je veux ouvrir fait suite à un premier popup de confirmation "Confirmez-vous le changement de process" avec deux boutons "Oui/Non".
En cliquant sur Oui, je ferme le popup de confirmation et je saute dans le script.
Si, dans le script, je change le popup "Sauvegarde en cours.." par un autre : idem, forme noire de la fenêtre popup sans rien dedans.
Très rarement, le popup indiquant la sauvegarde apparaît correctement, comme par magie !
Et puis les fois d'après : rectangle noir.
Tout ça sur la simulation. Sur le Magelis, rien n'apparaît du tout, même pas l'ombre noire du popup.
C'est à n'y rien comprendre...
Un bug de Vijeo Designer ?
Re: Ouvrir un popup en script dans Vijeo Designer
Posté : 05 avr. 2017, 18:05
par philou77
Salut..
Essaye de temporiser ton script au départ.. histoire de lui laisser le temps d'afficher le popup
Re: Ouvrir un popup en script dans Vijeo Designer
Posté : 06 avr. 2017, 09:17
par Béryl
Déjà tenté : idem.
En fait j'ai l'impression que le problème vient d'une ouverture de popup juste après la fermeture d'un autre.
Sans passer par un script j'ai le même souci.
Je vais tenter sur un Magelis puceau, comme dit Itasoft

Re: Ouvrir un popup en script dans Vijeo Designer
Posté : 06 avr. 2017, 09:54
par steph68
hello,
utilise plutôt une approche "asynchrone".
1ère étape: afficher le popup
2ème étape: transférer les données (en une ou plusieurs étapes, suivant le volume = dépend du temps)
3ème étape: attendre (vrai tempo, pas une boucle)
4ème étape: enlever le popup
il faut rendre la main rapidement au système pour qu'il puisse gérer ses évènements (comme l'affichage du popup par ex, l'échange de vars et cie)
tous les IHM sont basés sur un fonctionnement / une programmation évènementielle (
https://fr.wikipedia.org/wiki/Programma ... ementielle)
donc quand tu demandes l'affichage du popup, le système en prend note (message dans une file d'attente), mais il ne fera réellement le boulot d'affichage que quand il aura le temps ... (temps qu'il n'a pas puisque tu monopolises le système par tes boucles).
un seul script, une variable d'étape, ... = grafcet ou machine à états
exemple possible: un déclencheur / trigger de script sur chgt d'état d'un bool et à chaque exécution du script tu commutes la variable bool (flip flop) = ton script sera rappelé à la prochaine "scrutation", entre temps le système aura purgé sa file d'attente de messages...
reste à gérer un compteur dans ton script qui correspond à ton n° d'étape.
un trigger sur le n° d'étape devrait le faire aussi (à tester, je ne sais plus comment vijeo réagit à ce niveau)
@+
Re: Ouvrir un popup en script dans Vijeo Designer
Posté : 06 avr. 2017, 10:33
par Béryl
Oui c'est exactement ça, je viens de m'en apercevoir.
C'est la boucle d'attente qui bloque tout (même l'affichage de l'heure !). Sans elle, ça tourne.
Je vais donc chercher un moyen de temporiser sans bloquer la file d'attente.
Merci !
Re: Ouvrir un popup en script dans Vijeo Designer
Posté : 21 avr. 2025, 01:27
par Gillou53
Désolé pour le déterrage, mais j'espère que cela pourra aider quelqu'un.
Pour info le mode simulation compile du code java disponible dans : C:\Users\Public\Documents\Vijeo-Designer 6.2\_sim\IHM.
On peu en déduire le code standard Schneider simplifié suivant pour ouvrir un popup :
Code : Tout sélectionner
NomFenetre.close();
NomFenetre.open(xPos, yPos);
if ( NomFenetre.changePanel(panelID) )
NomFenetre.show(true);
else
NomFenetre.close();
Pour information ; le code java schneider est structuré de la façon suivante :
- La classe Initiale est dans Startup.java
- le code d'affichage des écrans est dans Panelxxxx.java (xxxx = N° d'Écran)
- le code de calcule des informations calculées d'un écran est dans PanelxxxxXprSrv.java (xxxx = N° d'Écran)
- le code de script des écrans est dans PanelxxxxActionScipty.java (xxxx = N° d'Écran ; y = N° d'ordre du script)
- pour les objets d'écran (Commutateurs, lampes, ...), c'est un petit peu plus compliquer à décoder (c'est le cas de le dire

), le codes est dans l'un des fichier Switch_xxx.java, Lamp_xxx.java, ... . c'est d'autant plus compliqué à décoder qu'il peut y avoir passage d'arguments entre les classes Panel_x, Panel_XprSrv et Switch_y.
PS : la simplification du code consiste en la suppression de coef de mise à l'échelle pour l'affichage
PPS : On remarque que ce code se contente, en cas de non réussite d'ouverture, de forcer la fermeture du popup. Ce qui normalement permet de réussir au second essai.
Re: Ouvrir un popup en script dans Vijeo Designer
Posté : 21 avr. 2025, 11:39
par itasoft
A savoir que pendant que le script s"execute plus rien d'autre ne fonctionne, faire comme dit steph68
Re: Ouvrir un popup en script dans Vijeo Designer
Posté : 22 avr. 2025, 15:27
par Gillou53
itasoft a écrit : ↑21 avr. 2025, 11:39
A savoir que pendant que le script s"execute plus rien d'autre ne fonctionne, faire comme dit
steph68
Je ne dit pas le contraire, simplement qu'il est possible "d'afficher" un popup simple, avec un scripte relativement simple et en un seul scan par le système. Ce n'est pas moi qui l'ai inventé ce code, c'est Schneider le fabriquant (je voie déjà arriver les sarcasme !) et celui impliqué par l'application sur n'importe quel commutateur standard d'une opération sur Popup : Ouvrir le popup N°00000 à la position xxxx, yyyy !
Mais je suis d'accord que lorsque :
- l'I/O scanner de vijéo est impliqué, surtout pour les information Externes impliquant des communications, dans les informations à mettre à jour
- des rafraichissement d'objets sur l'écran sont en jeu,
- ...
Un scan multi-passe est indispensable. Et bien sur ; c'est tout sauf une bonne idée que décrire un code long à exécuter dans un environnement multitâche. Car oui, gare au Freeze !
Et l'analyse du code java le montre clairement (pour toute personne connaissant un temps soit peu le java et surtout la programmation orientée objet pour application type Windows). On distingue clairement le code évènementiel et les interactions entre objets.
PS : Remarque : les fichier ".java" sont des fichiers texte basiques, donc ouvrable avec n'importe quel éditeur, pas besoin de suite de développement java pour les ouvrir ; néanmoins un éditeur gratuit et ultraléger tel que "Notpade++" apporte : la mise en forme syntaxique et la structuration en blocs de code qui aide grandement à parcourir et lire les fichiers. Et si la lecture des scriptes ne vous décourage pas, on apprend beaucoup sur le fonctionnement sous-jacent de Vijéo à leurs lecture !