<?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>VM Execution killed</title>
		<link>http://aseba.wikidot.com/forum/t-14110833/vm-execution-killed</link>
		<description>Posts in the discussion thread &quot;VM Execution killed&quot;</description>
				<copyright></copyright>
		<lastBuildDate>Fri, 10 Jul 2026 16:27:07 +0000</lastBuildDate>
		
					<item>
				<guid>http://aseba.wikidot.com/forum/t-14110833#post-4999606</guid>
				<title>Re: VM Execution killed</title>
				<link>http://aseba.wikidot.com/forum/t-14110833/vm-execution-killed#post-4999606</link>
				<description></description>
				<pubDate>Mon, 07 Jun 2021 14:39:37 +0000</pubDate>
				<wikidot:authorName>riedo</wikidot:authorName>				<wikidot:authorUserId>875981</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Bonjour,</p> <p>Alors j'ai testé votre code. Il y a 2 endroits qui le font &quot;killer&quot;: la subroutine et la boucle while.<br /> Comme je l'ai dit dans mon message précédent, les boucles trop longues ou infinies sont interrompues automatiquement.</p> <p>Votre sous-routine a plusieurs for imbriqués les uns dans les autres. Je pense que vous voulez faire des effets lumineux; mais il faut se rendre compte qu'une instruction est très rapide, donc en l'état actuel vous n'auriez pas le temps de voir les effets, et la boucle générée est trop longue.</p> <p>Aseba est un langage basé sur les événements. La boucle qui vérifie les capteurs, commande les moteurs, est implicite mais elle existe déjà derrière, il ne faut donc pas créer d'autre boucle longue qui empêche l'exécution des autres événements.</p> <p>Par exemple, si vous écrivez quelque chose comme</p> <div class="code"> <pre><code>var avance=0 onevent button.forward avance= 100 onevent motor while avance==0 motor speed=0 end motor speed=500</code></pre></div> <p>ça ne marchera pas. l'exécution restera coincée dans le while, et l'événement button.forward ne peut pas etre exécuté.</p> <p>Il faut plutot utiliser les événements, les variables et les timer.<br /> Par exemple pour un effet lumineux chenille sur le cercle</p> <div class="code"> <pre><code>var leds[8]=[0,0,0,0,0,0,0,0] var anim=1 timer.period[0]=100 #chaque 10e de seconde onevent timer0 anim +=1 if anim&gt;7 then anim=0 leds[anim]=32 leds[7]=0 call leds.circle(leds[0],leds[1],leds[2],leds[3],leds[4],leds[5],leds[6],leds[7]) else leds[anim]=32 leds[anim-1]=0 call leds.circle(leds[0],leds[1],leds[2],leds[3],leds[4],leds[5],leds[6],leds[7]) end</code></pre></div> <br /> De même pour réagir aux obstacles, pas de while, mais des if dans les événements de capteurs, et des commandes en vitesse.
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-14110833#post-4994220</guid>
				<title>Re: VM Execution killed</title>
				<link>http://aseba.wikidot.com/forum/t-14110833/vm-execution-killed#post-4994220</link>
				<description></description>
				<pubDate>Tue, 01 Jun 2021 14:40:04 +0000</pubDate>
				<wikidot:authorName>jmep</wikidot:authorName>				<wikidot:authorUserId>7494262</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Bonsoir et merci riedo,</p> <p>ci-dessous le code.<br /> Merci de votre aide.</p> <p>var temps<br /> var FlecheAvant<br /> var FlecheArriere<br /> var FlecheGauche<br /> var i<br /> var LedsCercle[8]<br /> var i2<br /> var i3<br /> var i4<br /> var i5</p> <p>temps = 200<br /> FlecheAvant = 0<br /> FlecheArriere = 0<br /> FlecheGauche = 0<br /> timer.period[0] = 100</p> <p>sub Feu<br /> for i5 in 1:10 do<br /> for i2 in 0:7 do<br /> call sound.system(5)<br /> LedsCercle[i2] = 32<br /> for i3 in 1:200 do<br /> call leds.circle(LedsCercle[0],LedsCercle[1],LedsCercle[2],LedsCercle[3],LedsCercle[4],LedsCercle[5],LedsCercle[6],LedsCercle[7])<br /> call leds.top(32,LedsCercle[2],LedsCercle[4])<br /> LedsCercle[i2] = 16<br /> if i2 &gt; 0 then<br /> LedsCercle[(i2 - 1)] = 0<br /> end<br /> if i2 == 7 then<br /> LedsCercle[i2] = 0<br /> end<br /> end<br /> end<br /> for i2 in 0:7 do<br /> LedsCercle[i2] = 32<br /> for i4 in 1:200 do<br /> call leds.circle(LedsCercle[0],LedsCercle[7],LedsCercle[6],LedsCercle[5],LedsCercle[4],LedsCercle[3],LedsCercle[2],LedsCercle[1])<br /> call leds.top(LedsCercle[7],LedsCercle[5],LedsCercle[3])<br /> LedsCercle[i2] = 16<br /> if i2 &gt; 0 then<br /> LedsCercle[(i2 - 1)] = 0<br /> end<br /> if i2 == 7 then<br /> LedsCercle[i2] = 0<br /> end<br /> end<br /> end<br /> end<br /> call leds.circle(0,0,0,0,0,0,0,0)</p> <p>onevent button.forward<br /> when button.forward == 1 do<br /> FlecheArriere = 0<br /> FlecheGauche = 0<br /> FlecheAvant = 1<br /> call leds.circle(32,0,0,0,0,0,0,0)<br /> if prox.horizontal[2] &lt; 1000 then<br /> motor.left.target = 200<br /> motor.right.target = 200<br /> end<br /> end</p> <p>onevent timer0<br /> if temps &lt; 100 then<br /> temps = temps + 1<br /> if FlecheArriere == 1 then<br /> if temps == 90 then<br /> motor.left.target = 0<br /> motor.right.target = 0<br /> call leds.circle(0,0,0,0,0,0,0,0)<br /> callsub Feu<br /> FlecheArriere = 0<br /> temps = 200<br /> end<br /> end<br /> if FlecheAvant == 1 then<br /> if temps == 12 then<br /> motor.left.target = 0<br /> motor.right.target = 0<br /> call leds.circle(0,0,0,0,0,0,0,0)<br /> FlecheAvant = 0<br /> temps = 200<br /> end<br /> end<br /> if FlecheGauche == 1 then<br /> if temps == 13 then<br /> motor.left.target = 50<br /> motor.right.target = -50<br /> for i in 1:1000 do<br /> call leds.circle(0,0,0,0,0,0,0,0)<br /> end<br /> FlecheGauche = 0<br /> motor.left.target = 0<br /> motor.right.target = 0<br /> temps = 200<br /> end<br /> end<br /> end</p> <p>onevent button.center<br /> when button.center == 1 do<br /> end</p> <p>onevent button.left<br /> when button.left == 1 do<br /> FlecheArriere = 0<br /> FlecheAvant = 0<br /> FlecheGauche = 1<br /> call leds.circle(0,0,0,0,0,0,32,0)<br /> temps = 0<br /> motor.left.target = -86<br /> motor.right.target = 86<br /> end</p> <p>onevent button.right<br /> when button.right == 1 do<br /> FlecheArriere = 0<br /> FlecheGauche = 0<br /> FlecheAvant = 0<br /> call leds.circle(0,0,32,0,0,0,0,0)<br /> while not prox.horizontal[2] &gt; 2000 do<br /> if prox.ground.delta[0] &gt; 450 then<br /> motor.left.target = 300<br /> motor.right.target = -300<br /> else<br /> motor.left.target = 200<br /> motor.right.target = 200<br /> end<br /> if prox.ground.delta[1] &gt; 450 then<br /> motor.left.target = -300<br /> motor.right.target = 300<br /> else<br /> motor.left.target = 200<br /> motor.right.target = 200<br /> end<br /> end<br /> motor.left.target = 0<br /> motor.right.target = 0<br /> call leds.circle(0,0,0,0,0,0,0,0)<br /> end</p> <p>onevent prox<br /> when prox.horizontal[2] &gt; 2000 do<br /> if FlecheAvant == 1 then<br /> temps = 0<br /> motor.left.target = 190<br /> motor.right.target = -190<br /> elseif FlecheArriere == 1 then<br /> temps = 0<br /> motor.left.target = 100<br /> motor.right.target = 100<br /> elseif motor.left.speed &lt; 5 and motor.right.speed &lt; 5 then<br /> motor.left.target = 0<br /> motor.right.target = 0<br /> end<br /> end</p> <p>onevent button.backward<br /> when button.backward == 1 do<br /> FlecheGauche = 0<br /> FlecheAvant = 0<br /> FlecheArriere = 1<br /> call leds.circle(0,0,0,0,32,0,0,0)<br /> motor.left.target = -195<br /> motor.right.target = 195<br /> end</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-14110833#post-4993904</guid>
				<title>Re: VM Execution killed</title>
				<link>http://aseba.wikidot.com/forum/t-14110833/vm-execution-killed#post-4993904</link>
				<description></description>
				<pubDate>Tue, 01 Jun 2021 07:30:42 +0000</pubDate>
				<wikidot:authorName>riedo</wikidot:authorName>				<wikidot:authorUserId>875981</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Bonjour,</p> <p>Pour que je puisse vous aider précisément il faudrait que vous partagiez votre code, sans ça il est difficile de débugger.<br /> Vu le message il y a probablement une boucle trop longue / boucle infinie qui est interrompue automatiquement.<br /> Aseba est basé sur les événements, il faut donc utiliser les événements, et non des boucles infinies.</p> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://aseba.wikidot.com/forum/t-14110833#post-4993815</guid>
				<title>VM Execution killed</title>
				<link>http://aseba.wikidot.com/forum/t-14110833/vm-execution-killed#post-4993815</link>
				<description></description>
				<pubDate>Tue, 01 Jun 2021 05:32:16 +0000</pubDate>
				<wikidot:authorName>jmep</wikidot:authorName>				<wikidot:authorUserId>7494262</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Bonjour,<br /> La création d'un programme permet de commander 4 actions avec les 4 flèches. Seulement 3 fonctionnent. Le dernier doit permettre au Thymio de suivre une ligne noire et de s'arrêter quand il y a un obstacle. Le message &quot;VM Execution killed&quot; apparaît systématiquement. Pourtant le mode bleu clair fonctionne.<br /> Merci de votre aide.<br /> Jean-Marc</p> 
				 	]]>
				</content:encoded>							</item>
				</channel>
</rss>