<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wikidot="http://www.wikidot.com/rss-namespace">

	<channel>
		<title>while...do loop et timer</title>
		<link>http://aseba.wikidot.com/forum/t-509308/while-do-loop-et-timer</link>
		<description>Posts in the discussion thread &quot;while...do loop et timer&quot; - while...do loop never interrupted by the timer event routine</description>
				<copyright></copyright>
		<lastBuildDate>Sun, 06 Sep 2026 05:46:50 +0000</lastBuildDate>
		
					<item>
				<guid>http://aseba.wikidot.com/forum/t-509308#post-1479857</guid>
				<title>Re: while...do loop et timer</title>
				<link>http://aseba.wikidot.com/forum/t-509308/while-do-loop-et-timer#post-1479857</link>
				<description></description>
				<pubDate>Thu, 14 Jun 2012 09:52:39 +0000</pubDate>
				<wikidot:authorName>Michael Bonani</wikidot:authorName>				<wikidot:authorUserId>861355</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>En effet les événements ne sont pas des interruptions, ce sont juste des événements qui sont traités l'un après l'autre dès que le précédent est fini. Si deux sont en attente l'ordre de priorité est défini par la liste des événements dans Asebastudio (les plus hauts ont la priorité).</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-509308#post-1479280</guid>
				<title>Re: while...do loop et timer</title>
				<link>http://aseba.wikidot.com/forum/t-509308/while-do-loop-et-timer#post-1479280</link>
				<description></description>
				<pubDate>Wed, 13 Jun 2012 17:04:40 +0000</pubDate>
				<wikidot:authorName>Oyeah</wikidot:authorName>				<wikidot:authorUserId>1234575</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Mais alors, les événements timer ne sont pas des vraies interruptions?</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-509308#post-1479262</guid>
				<title>Re: while...do loop et timer</title>
				<link>http://aseba.wikidot.com/forum/t-509308/while-do-loop-et-timer#post-1479262</link>
				<description></description>
				<pubDate>Wed, 13 Jun 2012 16:37:12 +0000</pubDate>
				<wikidot:authorName>StephaneMagnenat</wikidot:authorName>				<wikidot:authorUserId>709253</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Aucun variable n'est remise à jour à l'intérieur d'une boule <tt>while</tt>, qui n'est pas interrompue. Ainsi, l'événement <tt>timer0</tt> ne sera pas exécuté, et donc la boucle <tt>while</tt> sera infinie. En pratique, l'exécution sera stoppée au bout de 1000 instructions par la machine virtuelle, mais le résultat n'est pas défini.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-509308#post-1479195</guid>
				<title>Re: while...do loop et timer</title>
				<link>http://aseba.wikidot.com/forum/t-509308/while-do-loop-et-timer#post-1479195</link>
				<description></description>
				<pubDate>Wed, 13 Jun 2012 15:06:17 +0000</pubDate>
				<wikidot:authorName>Oyeah</wikidot:authorName>				<wikidot:authorUserId>1234575</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Note: les &quot; 1.&quot; ont été rajoutés par le convertisseur du forum. Dans mon texte, c'étaient des caractères dièse qui annoncent les commentaires dans le code&#8230;</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-509308#post-1479193</guid>
				<title>while...do loop et timer</title>
				<link>http://aseba.wikidot.com/forum/t-509308/while-do-loop-et-timer#post-1479193</link>
				<description></description>
				<pubDate>Wed, 13 Jun 2012 15:03:11 +0000</pubDate>
				<wikidot:authorName>Oyeah</wikidot:authorName>				<wikidot:authorUserId>1234575</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>En gros, un while&#8230;do teste la valeur d'une variable. (sorte de verrou pour arrêter les moteurs durant la programmation)</p> <p>Et un timer devait changer régulièrement la valeur d'une autre variable incluse dans le code du while afin d'obtenir un comportement différent.</p> <p>Même si c'est un code bizarre à priori (sorti du contexte), le plus curieux, c'est que ça ne marche pas!<br /> Le while qui s'exécute cycliquement n'est jamais interrompu par le code du timer et le compteur (de test) n'est pas incrémenté.</p> <p>Si la variable testée est initialisée à 0, le code de la boucle while n'est pas exécuté du tout et alors le timer fonctionne bien (la variable compteur est incrémentée).</p> <p>Même si ce code de test mélange les notions de boucle d'attente active basique et événement, je ne vois pas pouquoi ça ne marche pas. Une explication pourrait être utile à bien des utilisateurs.</p> <hr /> <ol> <li>juste faire zigzager Thymio sur place</li> </ol> <p>var dozigzag = 1<br /> var zigzag_a_gauche = 1<br /> var vitesse = 10 # cm/sec<br /> var zigzag_duree = 500 # milliseconds<br /> var compteurdecoups = 0 # surveiller le timer..</p> <p>timer.period [0] = zigzag_duree # milliseconds</p> <p>while dozigzag == 1 do<br /> if zigzag_a_gauche == 1 then<br /> motor.left.target = -vitesse<br /> motor.right.target = vitesse<br /> else<br /> motor.left.target = vitesse<br /> motor.right.target = -vitesse<br /> end<br /> end</p> <ol> <li>if dozigzag == 0 then</li> </ol> <p>motor.left.target = 0<br /> motor.right.target = 0</p> <ol> <li>end</li> </ol> <p>onevent timer0<br /> zigzag_a_gauche = (zigzag_a_gauche +1)%2<br /> compteurdecoups = compteurdecoups +1</p> <hr /> 
				 	]]>
				</content:encoded>							</item>
				</channel>
</rss>