12-24-2014, 12:30 AM
fredblabla a écrit :Je me posais une question. Est ce que si on execute un automate B au cours de l'automate A, est ce que B est lancé "en parallèle de A" ou est ce qu'on attend que B soit terminé?
J'ai l'impression que l'automate B est lancé et que l'automate A suit son cours.
Je voulais faire un automate B qui utilise des variables pour faire un Wait ( Random (min,max) ), un peu comme une procédure ou une fonction avec des variables globales.
PS: j'ai pas la fonction de script dans ma version de LD. J'imagine que ça vient avec un connecteur http ou ...?
comme tu dis, les deux s'exécutent en parallèle, ils sont asynchrones. Si tu veux les synchroniser, il faut en effet utiliser un WAIT qui attend en déclenchement une certaine valeur, autorisant ainsi le premier automate à continuer.
Automate A:
- bFini = false
- lancer automate B
- WAIT jusqu'à ce que bFini=true
- autres instructions de automate A etc
automate B:
- (fait un tas de trucs)
- bFini = true
attention qu'il est impossible d'avoir deux fois le même automate qui tourne en même temps, donc dans le cas de ton automate qui ferait l'équivalent d'une fonction random(min,Max) il faut être sur qu'aucun autre automate ne va l'appeler alors qu'il est en cours d'exécution car les seules options qu'on a concernant le démarrage d'un automate c'est :
- mode normal (on ignore une exécution alors qu'on est déjà en cours)
- mode recommencer (on abandonne l'exécution en cours et on recommence l'exécution à zéro)
www.osmotiq.com, domotique, développement logiciel et web -- tests & tutoriels KNX, Lifedomus, ZWave, etc.
Twitter: osmotiq
Twitter: osmotiq