<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Loïc Baumann&#039;s Blog</title>
	<atom:link href="http://loicbaumann.fr/en/feed/" rel="self" type="application/rss+xml" />
	<link>http://loicbaumann.fr</link>
	<description>.Net, Lego, Robotics and stuffs</description>
	<lastBuildDate>Fri, 24 Feb 2012 09:47:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>TFS devient gratuit avec sa version Express</title>
		<link>http://loicbaumann.fr/en/2012/02/24/tfs-devient-gratuit-avec-sa-version-express/</link>
		<comments>http://loicbaumann.fr/en/2012/02/24/tfs-devient-gratuit-avec-sa-version-express/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 08:54:20 +0000</pubDate>
		<dc:creator>Loïc Baumann</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[Pro]]></category>
		<category><![CDATA[TFS11]]></category>

		<guid isPermaLink="false">http://loicbaumann.fr/en/2012/02/24/tfs-devient-gratuit-avec-sa-version-express/</guid>
		<description><![CDATA[Conjointement avec la sortie de la Beta de Visual Studio 11 Brian Harry a annoncé la sortie d’une nouvelle version de TFS nommé “TFS Express” ce qui porte maintenant leur nombre à quatre: Team Foundation Service: la version “in the cloud” de TFS TFS “Standard/Full” : la version la plus complète de TFS TFS Basic [...]]]></description>
			<content:encoded><![CDATA[<p>Conjointement avec la <a href="http://loicbaumann.fr/en/2012/02/24/visual-studio-11-et-net-4-5-en-beta-le-29-fvrier/" target="_blank">sortie de la Beta</a> de Visual Studio 11 <a href="http://blogs.msdn.com/b/bharry/archive/2012/02/23/coming-soon-tfs-express.aspx" target="_blank">Brian Harry</a> a annoncé la sortie d’une nouvelle version de TFS nommé “TFS Express” ce qui porte maintenant leur nombre à quatre:</p>
<ul>
<li><a href="http://tfspreview.com/" target="_blank">Team Foundation Service</a>: la version “in the cloud” de TFS</li>
<li>TFS “Standard/Full” : la version la plus complète de TFS</li>
<li>TFS Basic : version au fonctionnalité et déploiement simplifié</li>
<li>TFS Express : le dernier arrivant</li>
</ul>
<h3>TFS Express, pour qui et pour quoi ?</h3>
<p>TFS Express vient compléter la gamme “Express” des produits de développement tels que Visual Studio ou SQL Server. Comme ses compères , TFS Express est donc <strong>gratuit</strong> et destiné aux passionnés, débutants souhaitant démarrer l’ALM sur une équipe réduite. </p>
<p>Les fonctionnalités annoncées de TFS Express:</p>
<ul>
<li>Gestionnaire de configuration avec le Source Code Control</li>
<li>Suivi des tâches avec le Work Item Tracking</li>
<li>Compilation automatisé</li>
<li>Tableau de tâches Agile</li>
</ul>
<p>  <span id="more-501"></span>
<p>Cette gratuité apporte certaines limitations:</p>
<ul>
<li>TFS Express supporte 5 utilisateurs au maximum, il sera toujours possible de dépasser cette limite en achetant des CALs (Client Access Licenses).</li>
<li>S’installe qu’avec SQL Server Express (ce qui peut se comprendre).</li>
<li>Déploiement sur un unique serveur, pour 5 utilisateurs cela ne devrait pas poser de problème!</li>
</ul>
<p>L’utilisation de TFS Express se fera via une nouvelle intégration dans la version Express de Visual Studio!</p>
<p>Et pour finir, Brian Harry promet une installation ultra simplifié à partir d’un EXE (qui a dit que l’installation de TFS aurait traumatisée des gens?)</p>
]]></content:encoded>
			<wfw:commentRss>http://loicbaumann.fr/en/2012/02/24/tfs-devient-gratuit-avec-sa-version-express/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Studio 11 et .Net 4.5 en beta le 29 F&#233;vrier</title>
		<link>http://loicbaumann.fr/en/2012/02/24/visual-studio-11-et-net-4-5-en-beta-le-29-fvrier/</link>
		<comments>http://loicbaumann.fr/en/2012/02/24/visual-studio-11-et-net-4-5-en-beta-le-29-fvrier/#comments</comments>
		<pubDate>Fri, 24 Feb 2012 07:58:09 +0000</pubDate>
		<dc:creator>Loïc Baumann</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Pro]]></category>
		<category><![CDATA[VS11]]></category>

		<guid isPermaLink="false">http://loicbaumann.fr/en/2012/02/24/visual-studio-11-et-net-4-5-en-beta-le-29-fvrier/</guid>
		<description><![CDATA[Ca bouge enfin du coté de la DevDiv de Microsoft! Nous n’avions pas grand chose à nous mettre sous la dent depuis la conférence Build mais à l’approche du MVP Summit, Microsoft commence à dévoiler le futur de son écosystème lié au développement. Visual Studio 11, version Metro La tendance se confirme: tout la gamme [...]]]></description>
			<content:encoded><![CDATA[<p>Ca bouge enfin du coté de la DevDiv de Microsoft! Nous n’avions pas grand chose à nous mettre sous la dent depuis la conférence Build mais à l’approche du MVP Summit, Microsoft commence à dévoiler le futur de son écosystème lié au développement.</p>
<h3>Visual Studio 11, version Metro</h3>
<p>La tendance se confirme: tout la gamme des produits Microsoft passe au style Metro, c’est sûr que le changement est radical! Pour ma part l’abandon de relief (“chrome” comme disent nos collègues Américains) au profit de la clarté et de la simplicité est une bonne chose.</p>
<p>Un petit screenshot veut mieux qu’un long discours:</p>
<p><a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/1680.SolutionExplorer_2D00_2.png" target="_blank"><img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-30-15/1680.SolutionExplorer_2D00_2.png" width="640" height="347" /></a></p>
<h3></h3>
<h3>Qu’attendre de cette version 11 de Visual Studio?</h3>
<p>    <span id="more-496"></span>
<p>En vrac:</p>
<ul>
<li>Un Go Live le 29 Février, ce qui nous indique que cette beta est certainement très mature! </li>
<li>Un Visual Studio <strong>plus rapide, plus réactif et moins buggé</strong>! Le passage à WPF pour Visual Studio 2010 aura laissé quelques traces et malgré les efforts de dernière minute pour optimiser au mieux il faut admettre que Visual Studio 2010 est assez lourd à l’utilisation (même si je ne reviendrais à la version 2008 pour rien au monde). </li>
<li>Une expérience simplifier pour les développeurs. Microsoft nous avait promis qu’il corrigerait/simplifierait plein de scénarios utilisateur lié au développement de tous les jours. </li>
<li>Développement pour Windows 8 </li>
<li>Et bien d’autres fonctionnalités! </li>
</ul>
<p>On attend le 29 avec impatience!</p>
]]></content:encoded>
			<wfw:commentRss>http://loicbaumann.fr/en/2012/02/24/visual-studio-11-et-net-4-5-en-beta-le-29-fvrier/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to use NuGet with the TFS Version Control</title>
		<link>http://loicbaumann.fr/en/2012/02/07/how-to-use-nuget-with-the-tfs-version-control/</link>
		<comments>http://loicbaumann.fr/en/2012/02/07/how-to-use-nuget-with-the-tfs-version-control/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 17:07:37 +0000</pubDate>
		<dc:creator>Loïc Baumann</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[Pro]]></category>
		<category><![CDATA[NuGet]]></category>
		<category><![CDATA[TFS2010]]></category>

		<guid isPermaLink="false">http://loicbaumann.fr/en/?p=489</guid>
		<description><![CDATA[NuGet is really a great tool, something that we&#8217;ve missed for many many years in the Microsoft World. But don&#8217;t expect it to be at the top yet, which is understandable due to his young age. However it&#8217;s improving and the latest version 1.6 just proves it! Two ways to put under Source Control your [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://nuget.org/" target="_blank">NuGet </a>is really a great tool, something that we&#8217;ve missed for many many years in the Microsoft World. But don&#8217;t expect it to be at the top yet, which is understandable due to his young age. However it&#8217;s improving and the latest version 1.6 just proves it!</p>
<h1>Two ways to put under Source Control your NuGet package references</h1>
<p>Let&#8217;s briefly describe these methods by starting with the first introduced in the tool</p>
<h2><span id="more-489"></span>Full commit of packages</h2>
<p>This method is kind of the &#8220;brute force&#8221; way to handle source control of the package: the whole content of the &#8220;packages&#8221; folder is put under source control.</p>
<p>Putting binaries under source control as a general practice is subject to many debates and I honestly couldn&#8217;t take a position. It&#8217;s supposed to be bad if your SCM tool can&#8217;t handle a big volume of data (for obvious reason) or if the bandwidth between your server and you is not great. Considering TFS capabilities (i.e. centralized model, compression of data exchange, storage on SQL Server) we&#8217;re pretty confident about storing a lot of binaries.</p>
<p>This method is the one used by default in Visual Studio, when you add a Package Reference to a project under source control, you get everything added to TFSC.</p>
<p><a rel="attachment wp-att-490" href="http://loicbaumann.fr/en/2012/02/07/how-to-use-nuget-with-the-tfs-version-control/nugetpackagecommmit/"><img class="alignnone size-full wp-image-490" title="NuGetPackageCommmit" src="http://loicbaumann.fr/wp-content/uploads/2012/02/NuGetPackageCommmit.png" alt="" width="267" height="200" /></a></p>
<h2>NuGet Package Restore</h2>
<p>This method is the new one, supported from the version 1.6 of NuGet. It&#8217;s the answer to the many criticisms/remarks made to the NuGet team since the release of the tool. Where the &#8220;full commit&#8221; way could be harmless with SCM tools like TFS, it can&#8217;t be said so with tools like Git which apparently can&#8217;t handle without bad consequences the addition of so much binary data.</p>
<table>
<tbody>
<tr>
<td><a rel="attachment wp-att-491" href="http://loicbaumann.fr/en/2012/02/07/how-to-use-nuget-with-the-tfs-version-control/nugetpackagerestore/"><img class="size-full wp-image-491 alignnone" title="NuGetPackageRestore" src="http://loicbaumann.fr/wp-content/uploads/2012/02/NuGetPackageRestore.png" alt="" width="286" height="249" /></a></td>
<td><a rel="attachment wp-att-493" href="http://loicbaumann.fr/en/2012/02/07/how-to-use-nuget-with-the-tfs-version-control/nugetpackagerestoreon-2/"><img class="size-full wp-image-493 alignnone" title="NuGetPackageRestoreOn" src="http://loicbaumann.fr/wp-content/uploads/2012/02/NuGetPackageRestoreOn1.png" alt="" width="281" height="289" /></a></td>
</tr>
</tbody>
</table>
<p>The Package Restore feature can be enabled by right clicking on the solution node in the Solution Explorer. When activating this feature, a new Solution Folder &#8220;.nuget&#8221; will be added to your solution and every project will be modified to use a new building target.</p>
<p>This new building target will check every time you start a build on a given project if the NuGet references specified by the packages.config file are present. If it&#8217;s not the case they will be downloaded and unpack.</p>
<p>This method is way lighter on the SCM side, the cost of NuGet is mainly the config files it adds to projects. The downside is the little extra time spent during compilation to check the existence of the packages.</p>
<h2>Final word</h2>
<p>Which way is better ? It&#8217;s a matter of taste, but personally I&#8217;ll use the Package Restore because even if TFS can handle the size of binaries, I prefer the light way. Considering the popularity of a <a href="http://visualstudio.uservoice.com/forums/121579-visual-studio/category/30925-team-foundation-server" target="_blank">distributed version of TFSC</a> and the fact that TFS will be soon <a href="https://tfspreview.com/" target="_blank">in the cloud</a> you may not want to end up with a solution that doesn&#8217;t scale on the WAN.</p>
]]></content:encoded>
			<wfw:commentRss>http://loicbaumann.fr/en/2012/02/07/how-to-use-nuget-with-the-tfs-version-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visualization &amp; Modeling Feature Pack : du neuf pour le C++</title>
		<link>http://loicbaumann.fr/en/2011/09/16/visualization-modeling-feature-pack-du-neuf-pour-le-c/</link>
		<comments>http://loicbaumann.fr/en/2011/09/16/visualization-modeling-feature-pack-du-neuf-pour-le-c/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 12:12:01 +0000</pubDate>
		<dc:creator>Loïc Baumann</dc:creator>
				<category><![CDATA[ALM]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://loicbaumann.fr/en/?p=466</guid>
		<description><![CDATA[Les développeurs C++ ont tendance à être oublié par Microsoft quant il s&#8217;agit d&#8217;ALM pour les outils client. Il faut dire que l&#8217;éditeur s&#8217;est penché sur cette discipline après la sortie de .net et celui-ci rend plus facile la réalisation de certains points comme les outils liés à l&#8217;architecture. Par exemple lorsque Visual Studio 2010 [...]]]></description>
			<content:encoded><![CDATA[<p>Les développeurs C++ ont tendance à être oublié par Microsoft quant il s&#8217;agit d&#8217;ALM pour les outils client. Il faut dire que l&#8217;éditeur s&#8217;est penché sur cette discipline après la sortie de .net et celui-ci rend plus facile la réalisation de certains points comme les outils liés à l&#8217;architecture.</p>
<p>Par exemple lorsque Visual Studio 2010 est sortit, les fonctionnalités <em>Modeling</em> liées à l&#8217;architecture étaient réservées au monde de .net. On peut le comprendre car pour développer ce genre de fonctionnalités on pourra se reposer sur le mécanisme de réflexion qu&#8217;offre la plateforme .net.</p>
<p>Lorsqu&#8217;un langage ne permet pas de faire de la réflexion (comme le C++), seul le  parsing des sources d&#8217;un projet permet d&#8217;extraire les données que l&#8217;on  souhaite analyser. Ceux qui font du C++ savent que parser efficacement un fichier .cpp relève de l&#8217;exploit que seul le parseur de votre compilateur préféré sait réellement faire.</p>
<p>Voilà pourquoi logiquement (malheureusement) les développeurs natifs ont été privés de ce genre d&#8217;outil&#8230;jusqu&#8217;à ce que le <a href="https://msdn.microsoft.com/subscriptions/securedownloads/default.aspx?pv=18%3a370#FileId=43117" target="_blank">Visualization &amp; Modeling Feature Pack</a> point le bout de son .vsix.</p>
<p>Cette extension de Visual Studio est disponible pour les abonnés de la MSDN qui utilisent Visual Studio Ultimate, celle-ci offre bon nombre de nouvelles fonctionnalités (qui auront été coupées de la RTM ou demandées massivement par les utilisateurs).</p>
<p>Ce billet est consacré, vous l&#8217;aurez deviné, aux fonctionnalités liées au C++.</p>
<h2><span id="more-466"></span>Génération de graphe de dépendances</h2>
<p>Cette fonctionnalité de la brique Architect est maintenant iso fonctionnelle avec .net, il est possible de générer des graphes de dépendances pour les binaires, namespace et classes en C++. C&#8217;est une excellente nouvelle car même si un projet n&#8217;est pas gros il devient vite difficile de s&#8217;y retrouver lorsqu&#8217;il s&#8217;agit de C++. Cerise sur le gâteau, Microsoft nous offre une nouvelle fonctionnalité spécifique au C++: la possibilité de générer un graphe de dépendance des fichiers d&#8217;include!</p>
<p>A noter qu&#8217;il faudra attendre que l&#8217;Intellisense construise sa base de données avant de pouvoir générer un graphe</p>
<p><a rel="attachment wp-att-470" href="http://loicbaumann.fr/en/2011/09/16/visualization-modeling-feature-pack-du-neuf-pour-le-c/pleasewait/"><img class="alignnone size-full wp-image-470" title="PleaseWait" src="http://loicbaumann.fr/wp-content/uploads/2012/01/PleaseWait.png" alt="" width="612" height="22" /></a></p>
<p>Pour générer un graphe des includes:</p>
<p><a rel="attachment wp-att-471" href="http://loicbaumann.fr/en/2011/09/16/visualization-modeling-feature-pack-du-neuf-pour-le-c/menuincludedepgraph/"><img class="alignnone size-full wp-image-471" title="MenuIncludeDepGraph" src="http://loicbaumann.fr/wp-content/uploads/2012/01/MenuIncludeDepGraph.png" alt="" width="589" height="166" /></a></p>
<p>Voilà un exemple sur un projet du SDK de Direct X:</p>
<p><a rel="attachment wp-att-472" href="http://loicbaumann.fr/en/2011/09/16/visualization-modeling-feature-pack-du-neuf-pour-le-c/includedepgraph/"><img class="alignnone size-medium wp-image-472" title="IncludeDepGraph" src="http://loicbaumann.fr/wp-content/uploads/2012/01/IncludeDepGraph-300x187.png" alt="" width="300" height="187" /></a></p>
<h2>Créer un diagramme de couche et valider l&#8217;architecture</h2>
<p>Encore une fonctionnalité qui était disponible en .net et qui l&#8217;est maintenant en C++. Le principe ne change pas:</p>
<ul>
<li>Vous pouvez créer un diagramme de couches logiques.</li>
<li>Créer des relations entre les couches</li>
<li>Associer des namespaces ou classes à celles-ci</li>
<li>Vérifier que le diagramme logique est respecté dans la pratique en analysant les éléments de la solution.</li>
</ul>
<h2>Conclusion</h2>
<p>Ces deux fonctionnalités apportent vraiment un plus au développement C++, certains outils comme CppDepend le faisait déjà, mais voilà un geste envers les développeurs natifs que l&#8217;on apprécie, en espérant qu&#8217;il y en aura d&#8217;autres.</p>
]]></content:encoded>
			<wfw:commentRss>http://loicbaumann.fr/en/2011/09/16/visualization-modeling-feature-pack-du-neuf-pour-le-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Premier essai du FEZ-IO40</title>
		<link>http://loicbaumann.fr/en/2011/07/07/premier-essai-du-fez-io40/</link>
		<comments>http://loicbaumann.fr/en/2011/07/07/premier-essai-du-fez-io40/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 17:39:47 +0000</pubDate>
		<dc:creator>Loïc Baumann</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Robotique]]></category>
		<category><![CDATA[GHI]]></category>
		<category><![CDATA[NetMF]]></category>

		<guid isPermaLink="false">http://loicbaumann.fr/en/?p=454</guid>
		<description><![CDATA[La FEZ-IO40 est une carte de GHI qui permet de rajouter 40 prises numériques d’entrée/sortie à votre micro-contrôleur organisées en 5 ports de 8 prises chacun. La page du produit chez GHI. Le PDF de la carte. La classe qui permet de la manipuler. &#160; Le fonctionnement du IO40 est relativement simple: la carte repose [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://loicbaumann.fr/wp-content/uploads/2011/07/image4.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://loicbaumann.fr/wp-content/uploads/2011/07/image_thumb4.png" width="136" height="155" /></a>La FEZ-IO40 est une carte de GHI qui permet de rajouter 40 prises numériques d’entrée/sortie à votre micro-contrôleur organisées en 5 ports de 8 prises chacun.</p>
<p>La page du produit chez <a href="http://www.ghielectronics.com/catalog/product/189">GHI</a>.     <br />Le PDF de la <a href="http://www.ghielectronics.com/downloads/FEZ/Component/Broch_FEZ_IO40.pdf">carte</a>.     <br />La <a href="http://www.ghielectronics.com/downloads/FEZ/Component/FEZ_Components_IO40.cs">classe</a> qui permet de la manipuler.</p>
<p>&#160;</p>
<p>Le fonctionnement du IO40 est relativement simple: la carte repose sur une puce contrôleur <a href="http://www.google.fr/url?sa=t&amp;source=web&amp;cd=1&amp;sqi=2&amp;ved=0CBgQFjAA&amp;url=http%3A%2F%2Ffr.wikipedia.org%2Fwiki%2FI2C&amp;rct=j&amp;q=wikipedia%20I2C&amp;ei=lOcVTpmiNpHcsga3g7CpDw&amp;usg=AFQjCNEiZbF8tTj857XaF7X1RPyZKOiItQ&amp;sig2=e1jcNQXb3PDsH3nqfYqtYg&amp;cad=rja">I<sup>2</sup>C</a> qui s’occupera de “dispatcher” les signaux que vous aurez configuré à l’aide de la classe fournit.</p>
<h1>Câblage</h1>
<p>Je ne vais pas m’étaler sur le fonctionnement du port I<sup>2</sup>C, mais sachez que c’est un bus de communication en série très répandu (et pas qu’en robotique) et qu’il nécessite 4 fils:</p>
<ul>
<li>GND : la masse </li>
<li>+5V </li>
<li>SCL (Serial Clock) : l’horloge, pour rythmer l’envoie des données </li>
<li>SDA (Serial Data) : pour le transport des données </li>
</ul>
<p>  <span id="more-454"></span>
<p>On utilisera les deux port JST en bas à gauche pour connecter la carte au bus I<sup>2</sup>C du micro-contrôleur (I2C IN : SDA &amp; SCL). Les deux autres ports JST servent à connecter en cascade une autre carte étant basé sur le bus.</p>
<table border="0" cellspacing="0" cellpadding="2" width="500">
<tbody>
<tr>
<td valign="top" width="250"><a href="http://loicbaumann.fr/wp-content/uploads/2011/07/image5.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://loicbaumann.fr/wp-content/uploads/2011/07/image_thumb5.png" width="274" height="223" /></a></td>
<td valign="top" width="250">
<p><a href="http://loicbaumann.fr/wp-content/uploads/2011/07/image6.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://loicbaumann.fr/wp-content/uploads/2011/07/image_thumb6.png" width="250" height="208" /></a></p>
</td>
</tr>
<tr>
<td valign="top" width="250">SDA se branche sur I2C_DAT          <br />SCL se branche sur I2C_CLK</td>
<td valign="top" width="250">&#160;</td>
</tr>
</tbody>
</table>
<p>Ceux qui on l’œil remarqueront qu’on a branché 5 fils en tout, l’explication est toute simple: chaque prise JST comprend son propre fil relié à la masse (en noir) et à la tension haute (en rouge).</p>
<h1>L’API de la carte</h1>
<p>Dans la classe IO40 on retrouve les méthodes suivantes:</p>
<ul>
<li>MakePinOutput(byte port, byte pin): Configure une prise en sortie. </li>
<li>MakePinInput(byte port, byte pin): Configure une prise en entrée. </li>
<li>SetPin(byte port, byte pin): Met une prise (configurée en sortie donc) à 1. </li>
<li>ClearPin(byte port, byte pin): Met une prise (configurée en sortie) à 0. </li>
<li>ReadPin(byte port, byte pin): Lit l’état d’une prise (configurée en entrée). </li>
<li>SetPortInputs(byte port, byte mask): configure toutes les prises d’un port en entrée (bit correspondant à 1) ou sortie (bit correspondant à 0). </li>
<li>GetPortInputState : Lit la configuration entrée/sortie d’un port (la réciproque de SetPortInputs) </li>
<li>ReadPort : Lit les valeurs de chaque prise configurée en entrée d’un port </li>
<li>WritePort : Ecrit les valeurs pour chaque prise configurée en sortie d’un port </li>
</ul>
<h1>Un petit test</h1>
<p>J’ai effectué un montage simple:</p>
<table border="0" cellspacing="0" cellpadding="2" width="657">
<tbody>
<tr>
<td valign="top" width="341">
<p><a href="http://loicbaumann.fr/wp-content/uploads/2011/07/IO40WithLED.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IO40WithLED" border="0" alt="IO40WithLED" src="http://loicbaumann.fr/wp-content/uploads/2011/07/IO40WithLED_thumb.jpg" width="329" height="439" /></a></p>
</td>
<td valign="top" width="314"><a href="http://loicbaumann.fr/wp-content/uploads/2011/07/IO40WithLED2.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="IO40WithLED2" border="0" alt="IO40WithLED2" src="http://loicbaumann.fr/wp-content/uploads/2011/07/IO40WithLED2_thumb.jpg" width="311" height="233" /></a></td>
</tr>
</tbody>
</table>
<p>Une LED est branché sur la prise qui sera pilotée par le programme, une résistance permet d’abaisser la tension pour que la LED puisse fonctionner.</p>
<p>Le schéma du circuit et le code associé:</p>
<p><a href="http://loicbaumann.fr/wp-content/uploads/2011/07/Drawing11.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Drawing1" border="0" alt="Drawing1" align="left" src="http://loicbaumann.fr/wp-content/uploads/2011/07/Drawing1_thumb1.png" width="228" height="240" /></a></p>
<pre style="font-family: consolas; background: #22282a; color: white; font-size: 11px">	<span style="color: #93c763">private</span>&#160;<span style="color: #93c763">static</span>&#160;<span style="color: #93c763">void</span> TestIO40()
	{
		<span style="color: #93c763">var</span> io <span style="color: #e8e2b7">=</span>&#160;<span style="color: #93c763">new</span>&#160;<span style="color: #678cb1">IO40</span>(<span style="color: #ffcd22">0</span>);

		<span style="color: #66747b">// Make the pin 0 of port 0 an output</span>
		io<span style="color: #e8e2b7">.</span>MakePinOutput(<span style="color: #ffcd22">0</span>, <span style="color: #ffcd22">0</span>);

		<span style="color: #66747b">// Blink the LED 10 times</span>
		<span style="color: #93c763">for</span> (<span style="color: #93c763">int</span> i <span style="color: #e8e2b7">=</span>&#160;<span style="color: #ffcd22">0</span>; i <span style="color: #e8e2b7">&lt;</span>&#160;<span style="color: #ffcd22">10</span>; i<span style="color: #e8e2b7">++</span>)
		{
			io<span style="color: #e8e2b7">.</span>SetPin(<span style="color: #ffcd22">0</span>, <span style="color: #ffcd22">0</span>);
			<span style="color: #678cb1">Thread</span><span style="color: #e8e2b7">.</span>Sleep(<span style="color: #ffcd22">250</span>);
 			io<span style="color: #e8e2b7">.</span>ClearPin(<span style="color: #ffcd22">0</span>, <span style="color: #ffcd22">0</span>);
			<span style="color: #678cb1">Thread</span><span style="color: #e8e2b7">.</span>Sleep(<span style="color: #ffcd22">250</span>);
		}
	}</pre>
<p>La prise 0 du port 0 fait office de tension haute et l’autre prise n’est autre que la masse et le tour est joué!</p>
]]></content:encoded>
			<wfw:commentRss>http://loicbaumann.fr/en/2011/07/07/premier-essai-du-fez-io40/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Premier essai du ZX-Servo16U</title>
		<link>http://loicbaumann.fr/en/2011/06/28/premier-essai-du-zx-servo16u/</link>
		<comments>http://loicbaumann.fr/en/2011/06/28/premier-essai-du-zx-servo16u/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 22:34:23 +0000</pubDate>
		<dc:creator>Loïc Baumann</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Robotique]]></category>
		<category><![CDATA[NetMF]]></category>

		<guid isPermaLink="false">http://loicbaumann.fr/en/2011/06/28/premier-essai-du-zx-servo16u/</guid>
		<description><![CDATA[Késako le ZX-Servo16U? C’est une petite carte fille qui permet de contrôler jusqu’à 16 Servo moteurs, le tout en n’occupant qu’un port sur votre contrôleur principal. La fiche de description du produit par son constructeur. Le PDF des specs. Disponible chez RobotShop par exemple. Une image veut mieux qu’un long discours: J’ai posté une petite [...]]]></description>
			<content:encoded><![CDATA[<p>Késako le ZX-Servo16U? C’est une petite carte fille qui permet de contrôler jusqu’à 16 Servo moteurs, le tout en n’occupant qu’un port sur votre contrôleur principal.</p>
<p>La fiche de description du produit par son <a href="http://www.inexglobal.com/products.php?type=addon&amp;cat=app_motor&amp;model=zxservo16u" target="_blank">constructeur</a>.    <br />Le PDF des <a href="http://www.google.fr/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CBwQFjAA&amp;url=http%3A%2F%2Fwww.inexglobal.com%2Fdownloads%2Fzx-servo16U_e.pdf&amp;rct=j&amp;q=ZX-servo16u&amp;ei=hvwIToaTO4_KsgaxrJzODg&amp;usg=AFQjCNGmmWqxiBdjUb7xV2dZDPkp4Fe1Pw&amp;sig2=25vAcab_4W2TwE6YqJuTjg&amp;cad=rja" target="_blank">specs</a>.    <br />Disponible chez <a href="http://www.robotshop.com/eu/controleur-16-servomoteurs-usb-inex.html" target="_blank">RobotShop</a> par exemple.</p>
<p>Une image veut mieux qu’un long discours:</p>
<p><a href="http://loicbaumann.fr/wp-content/uploads/2011/06/servo21.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="servo2" border="0" alt="servo2" src="http://loicbaumann.fr/wp-content/uploads/2011/06/servo2_thumb1.jpg" width="644" height="445" /></a></p>
<p>  <span id="more-406"></span>
<p>J’ai posté une petite vidéo qui démontre une utilisation très basique:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:82e33e6d-bf09-48fd-8117-52d1a710bee1" class="wlWriterEditableSmartContent">
<div><object width="744" height="417"><param name="movie" value="http://www.youtube.com/v/d-jl2_QFHdU?hl=en&amp;hd=1"></param><embed src="http://www.youtube.com/v/d-jl2_QFHdU?hl=en&amp;hd=1" type="application/x-shockwave-flash" width="744" height="417"></embed></object></div>
<div style="width:744px;clear:both;font-size:.8em">Petit essai du ZX-Servo16U avec ma FEZ Cobra</div>
</div>
<p>Le programme est tout bête:</p>
<pre style="font-family: ; background: #22282a; color: "><font face="Consolas"><span style="color: "><font color="#66747b"><font style="font-size: 8.3pt">// Object controlling the Servo controller (IO74)</font></font></span><font style="font-size: 8.3pt">
<span style="color: "><font color="#678cb1">Servo16</font></span><font color="#ffffff"> servo16 </font><span style="color: "><font color="#e8e2b7">=</font></span><font color="#ffffff">&#160;</font><span style="color: "><font color="#93c763">new</font></span><font color="#ffffff">&#160;</font><span style="color: "><font color="#678cb1">Servo16</font></span><font color="#ffffff">(</font><span style="color: "><font color="#678cb1">FEZ_Pin</font></span><span style="color: "><font color="#e8e2b7">.</font></span><span style="color: "><font color="#678cb1">Digital</font></span><span style="color: "><font color="#e8e2b7">.</font></span></font></font><font style="font-size: 8.3pt"><font face="Consolas"><font color="#ffffff">IO74);
</font><span style="color: "><font color="#66747b">// Object controlling the button (IO12)</font></span>
<span style="color: "><font color="#678cb1">Button</font></span><font color="#ffffff"> myButton </font><span style="color: "><font color="#e8e2b7">=</font></span><font color="#ffffff">&#160;</font><span style="color: "><font color="#93c763">new</font></span><font color="#ffffff">&#160;</font><span style="color: "><font color="#678cb1">Button</font></span><font color="#ffffff">(</font><span style="color: "><font color="#678cb1">FEZ_Pin</font></span><span style="color: "><font color="#e8e2b7">.</font></span><span style="color: "><font color="#678cb1">Digital</font></span><span style="color: "><font color="#e8e2b7">.</font></span></font><font face="Consolas"><font color="#ffffff">IO12);

</font><span style="color: "><font color="#66747b">// Wait for the button to be pushed</font></span>
<span style="color: "><font color="#93c763">while</font></span><font color="#ffffff"> (myButton</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">GetState() </font><span style="color: "><font color="#e8e2b7">!=</font></span><font color="#ffffff">&#160;</font><span style="color: "><font color="#678cb1">Button</font></span><span style="color: "><font color="#e8e2b7">.</font></span><span style="color: "><font color="#678cb1">ButtonState</font></span><span style="color: "><font color="#e8e2b7">.</font></span></font><font face="Consolas"><font color="#ffffff">Pressed)
{
	</font><span style="color: "><font color="#678cb1">Thread</font></span><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">Sleep(</font><span style="color: "><font color="#ffcd22">10</font></span></font><font face="Consolas"><font color="#ffffff">);
}
</font><span style="color: "><font color="#66747b">// Wait for the button to be released</font></span>
<span style="color: "><font color="#93c763">while</font></span><font color="#ffffff"> (myButton</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">GetState() </font><span style="color: "><font color="#e8e2b7">==</font></span><font color="#ffffff">&#160;</font><span style="color: "><font color="#678cb1">Button</font></span><span style="color: "><font color="#e8e2b7">.</font></span><span style="color: "><font color="#678cb1">ButtonState</font></span><span style="color: "><font color="#e8e2b7">.</font></span></font><font face="Consolas"><font color="#ffffff">Pressed)
{
	</font><span style="color: "><font color="#678cb1">Thread</font></span><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">Sleep(</font><span style="color: "><font color="#ffcd22">10</font></span></font><font face="Consolas"><font color="#ffffff">);
}

</font><span style="color: "><font color="#66747b">// Start the loop that will move the two servos</font></span>
<span style="color: "><font color="#93c763">while</font></span><font color="#ffffff"> (</font><span style="color: "><font color="#93c763">true</font></span></font><font face="Consolas"><font color="#ffffff">)
{
	</font><span style="color: "><font color="#66747b">// Check for button pushed, exit if it's the case</font></span>
<font color="#ffffff">	</font><span style="color: "><font color="#93c763">if</font></span><font color="#ffffff"> (myButton</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">GetState() </font><span style="color: "><font color="#e8e2b7">==</font></span><font color="#ffffff">&#160;</font><span style="color: "><font color="#678cb1">Button</font></span><span style="color: "><font color="#e8e2b7">.</font></span><span style="color: "><font color="#678cb1">ButtonState</font></span><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">Pressed) </font><span style="color: "><font color="#93c763">break</font></span></font><font face="Consolas"><font color="#ffffff">;

	</font><span style="color: "><font color="#66747b">// Set the servo at channel 0, with a ramp speed of 5, to the position 0Â°</font></span>
<font color="#ffffff">	servo16</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">SetServoPosition(</font><span style="color: "><font color="#ffcd22">0</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">5</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">0</font></span></font><font face="Consolas"><font color="#ffffff">);

	</font><span style="color: "><font color="#66747b">// Set the servo at channel 1, with a ramp speed of 5, to the position 0Â°</font></span>
<font color="#ffffff">	servo16</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">SetServoPosition(</font><span style="color: "><font color="#ffcd22">1</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">5</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">0</font></span></font><font face="Consolas"><font color="#ffffff">);

	</font><span style="color: "><font color="#66747b">// Wait for the operation to complete</font></span>
<font color="#ffffff">	</font><span style="color: "><font color="#678cb1">Thread</font></span><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">Sleep(</font><span style="color: "><font color="#ffcd22">1000</font></span></font><font face="Consolas"><font color="#ffffff">);

	</font><span style="color: "><font color="#66747b">// Check for button pushed, exit if it's the case</font></span>
<font color="#ffffff">	</font><span style="color: "><font color="#93c763">if</font></span><font color="#ffffff"> (myButton</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">GetState() </font><span style="color: "><font color="#e8e2b7">==</font></span><font color="#ffffff">&#160;</font><span style="color: "><font color="#678cb1">Button</font></span><span style="color: "><font color="#e8e2b7">.</font></span><span style="color: "><font color="#678cb1">ButtonState</font></span><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">Pressed) </font><span style="color: "><font color="#93c763">break</font></span></font><font face="Consolas"><font color="#ffffff">;

	</font><span style="color: "><font color="#66747b">// Set the servo at channel 0, with a ramp speed of 5, to the position 90Â°</font></span>
<font color="#ffffff">	servo16</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">SetServoPosition(</font><span style="color: "><font color="#ffcd22">0</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">5</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">90</font></span></font><font face="Consolas"><font color="#ffffff">);
	</font><span style="color: "><font color="#66747b">// Set the servo at channel 1, with a ramp speed of 5, to the position 30Â°</font></span>
<font color="#ffffff">	servo16</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">SetServoPosition(</font><span style="color: "><font color="#ffcd22">1</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">5</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">30</font></span></font><font face="Consolas"><font color="#ffffff">);
	</font><span style="color: "><font color="#678cb1">Thread</font></span><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">Sleep(</font><span style="color: "><font color="#ffcd22">1000</font></span></font><font face="Consolas"><font color="#ffffff">);

	</font><span style="color: "><font color="#66747b">// Now you can figure these lines out</font></span>
<font color="#ffffff">	</font><span style="color: "><font color="#93c763">if</font></span><font color="#ffffff"> (myButton</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">GetState() </font><span style="color: "><font color="#e8e2b7">==</font></span><font color="#ffffff">&#160;</font><span style="color: "><font color="#678cb1">Button</font></span><span style="color: "><font color="#e8e2b7">.</font></span><span style="color: "><font color="#678cb1">ButtonState</font></span><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">Pressed) </font><span style="color: "><font color="#93c763">break</font></span></font><font face="Consolas"><font color="#ffffff">;
	servo16</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">SetServoPosition(</font><span style="color: "><font color="#ffcd22">0</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">5</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">180</font></span></font><font face="Consolas"><font color="#ffffff">);
	servo16</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">SetServoPosition(</font><span style="color: "><font color="#ffcd22">1</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">5</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">120</font></span></font><font face="Consolas"><font color="#ffffff">);
	</font><span style="color: "><font color="#678cb1">Thread</font></span><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">Sleep(</font><span style="color: "><font color="#ffcd22">1000</font></span></font><font face="Consolas"><font color="#ffffff">);

}

</font><span style="color: "><font color="#66747b">// Reset the position of bot</font></span>
<font color="#ffffff">servo16</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">SetServoPosition(</font><span style="color: "><font color="#ffcd22">0</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">5</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">0</font></span></font></font><font face="Consolas"><font style="font-size: 8.3pt"><font color="#ffffff">);
servo16</font><span style="color: "><font color="#e8e2b7">.</font></span><font color="#ffffff">SetServoPosition(</font><span style="color: "><font color="#ffcd22">1</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">5</font></span><font color="#ffffff">, </font><span style="color: "><font color="#ffcd22">0</font></span><font color="#ffffff">);</font></font></font></pre>
<p>La classe Servo16 est développée par GHI, disponible ici: <a title="http://code.tinyclr.com/project/49/serial-servo-motor-controller/" href="http://code.tinyclr.com/project/49/serial-servo-motor-controller/">http://code.tinyclr.com/project/49/serial-servo-motor-controller/</a></p>
<p>Voilà, ce n’est pas sorcier et il y a de quoi faire avec 16 servos !</p>
]]></content:encoded>
			<wfw:commentRss>http://loicbaumann.fr/en/2011/06/28/premier-essai-du-zx-servo16u/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mettre &#224; jour le Firmware de la carte</title>
		<link>http://loicbaumann.fr/en/2011/06/25/mettre-jour-le-firmware-de-la-carte/</link>
		<comments>http://loicbaumann.fr/en/2011/06/25/mettre-jour-le-firmware-de-la-carte/#comments</comments>
		<pubDate>Sat, 25 Jun 2011 00:00:21 +0000</pubDate>
		<dc:creator>Loïc Baumann</dc:creator>
				<category><![CDATA[Robotique]]></category>
		<category><![CDATA[NetMF]]></category>

		<guid isPermaLink="false">http://loicbaumann.fr/en/?p=393</guid>
		<description><![CDATA[Comment tout bon élève (pour une fois) j’ai tenu à suivre les recommandations en rouge surligné de GHI lorsque je suis allé sur la page des téléchargements, à savoir: You must update your firmware. Voilà, c’est clair! Pourquoi donc? Tout simplement parce qu’une version donnée du SDK délivrée par GHI ne peut fonctionner correctement qu’avec [...]]]></description>
			<content:encoded><![CDATA[<p>Comment tout bon élève (pour une fois) j’ai tenu à suivre les recommandations en rouge surligné de GHI lorsque je suis allé sur la <a href="http://www.tinyclr.com/dl/" target="_blank">page des téléchargements</a>, à savoir:</p>
<p><span style="font-size: large;"><span style="text-decoration: underline;"><span style="color: #ff0000;">You must update your firmware</span></span>. </span></p>
<p>Voilà, c’est clair! Pourquoi donc? Tout simplement parce qu’une version donnée du SDK délivrée par GHI ne peut fonctionner correctement qu’avec le firmware correspondant.<br />
Donc si vous installez la version V 4.1.5.1 du SDK de GHI sur votre PC, il faudra mettre à jour le firmware de votre carte.</p>
<p>La procédure est digne…de la bidouille que l’on pouvait imaginer lorsque l’on débute dans le domaine (en tout cas de mon point de vue de développeur). Ce n’est pas insurmontable, mais les chances d’y arriver du premier coup sont minimes.</p>
<h2>Mes recommandations</h2>
<p>1) Installer les drivers USB spécifiques à la procédure de mise à jour du firmware. Disponible sur la page <a href="http://www.tinyclr.com/dl/" target="_blank">Downloads</a> de GHI.</p>
<p><a href="http://loicbaumann.fr/wp-content/uploads/2011/06/image11.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://loicbaumann.fr/wp-content/uploads/2011/06/image_thumb11.png" border="0" alt="image" width="505" height="87" /></a></p>
<p>2) Suivre la vidéo sur YouTube (<a href="http://www.youtube.com/watch?v=L73QJnAFzuk">Cobra</a>, <a href="http://www.youtube.com/watch?v=Ta-Wv7i5gq8">Panda/Domino/Mini/Rhino</a>) qui décrit la procédure ou la version <a href="http://wiki.tinyclr.com/index.php?title=Firmware_Update" target="_blank">Wiki</a>.</p>
<p>3) Bien suivre calmement toutes les étapes, si vous les brulez, la carte le deviendra peut être aussi! <img class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://loicbaumann.fr/wp-content/uploads/2011/06/wlEmoticon-smile.png" alt="Sourire" /></p>
<p>La seule réelle difficulté quand on n’a jamais flashé sa carte est de savoir si on est bien en mode “TinyBooter”.<br />
Par exemple la séquence pour entrer dans ce mode avec ma FEZ Cobra est:</p>
<blockquote><p>To read TinyBooter version number, all you have to do is to access TinyBooter (Press and hold Up and Down buttons on system boot up then release the buttons when you see &#8220;TinyBooter Mode&#8221; on EMX&#8217;s display. The version number is right after that line.</p></blockquote>
<p>Les premières fois j’ai bien eu “TinyBooter Mode” sur l’écran de ma Cobra, cependant pour une raison que j’ignore les drivers Windows spécifique au mode TinyBooter ne s’étaient pas initialisés, donc impossible de faire marcher l’étape avec le logiciel Tera Term.</p>
<p>Pour être bien sûr que les pilotes fonctionnent vous devez avoir un nouveau port COM de détecté lors que vous passez en mode TinyBooter. Si ca ne marche pas du premier coup, réessayez en changeant de port USB afin de forcer une détection totale du périphérique.</p>
<p>Bonne chance!</p>
]]></content:encoded>
			<wfw:commentRss>http://loicbaumann.fr/en/2011/06/25/mettre-jour-le-firmware-de-la-carte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quelle carte choisir?</title>
		<link>http://loicbaumann.fr/en/2011/06/25/quelle-carte-choisir/</link>
		<comments>http://loicbaumann.fr/en/2011/06/25/quelle-carte-choisir/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 23:43:29 +0000</pubDate>
		<dc:creator>Loïc Baumann</dc:creator>
				<category><![CDATA[Robotique]]></category>
		<category><![CDATA[GHI]]></category>
		<category><![CDATA[NetMF]]></category>

		<guid isPermaLink="false">http://loicbaumann.fr/en/?p=400</guid>
		<description><![CDATA[Bon, je ne suis pas parole d’évangile, mais après une brève recherche voilà ce que je peux dire sur les carte disponibles sur le marché. Le wiki de l’excellent site tinyclr.com référence sur cette page les différentes cartes disponibles sur le marché. (autant le dire tout de suite, le site tinyclr.com est l’initiative de GHI [...]]]></description>
			<content:encoded><![CDATA[<p>Bon, je ne suis pas parole d’évangile, mais après une brève recherche voilà ce que je peux dire sur les carte disponibles sur le marché.</p>
<p>Le wiki de l’excellent site <a href="http://wiki.tinyclr.com/" target="_blank">tinyclr.com</a> référence sur <a href="http://wiki.tinyclr.com/index.php?title=Devices" target="_blank">cette page</a> les différentes cartes disponibles sur le marché.    <br />(autant le dire tout de suite, le site tinyclr.com est l’initiative de GHI Electronics, mais il n’en demeure pas moins généraliste)</p>
<h2>Les constructeurs</h2>
<ul>
<li><a href="http://www.ghielectronics.com/" target="_blank">GHI Electronics</a></li>
<li><a href="http://netduino.com/" target="_blank">Secret Labs</a></li>
<li><a href="http://devicesolutions.net/" target="_blank">Device Solutions</a></li>
</ul>
<p>  <span id="more-400"></span>
<p>Device Solutions avec ses cartes Tahoe à l’air d’être un peu à la traine, d’ailleurs je n’arrive plus à trouver de site qui commercialise leurs cartes NetMF.</p>
<p>Secret Labs à sortie le pendant NetMF de <a href="http://fr.wikipedia.org/wiki/Arduino" target="_blank">l’Arduino</a>, l’avantage est que la carte bénéficie du même “Package” que son pendant en simili C++ (mais nous verrons que ce n’est pas le seul), ce qui vous donne accès au fameux <a href="http://www.arduino.cc/en/Main/ArduinoShields" target="_blank">Shields</a> de l’Arduino.</p>
<p>Et puis enfin, GHI electronics. Quand j’ai commencé à m’intéresser au NetMF j’ai vite découvert Device Solution et sa Tahoe II, je dois dire que j’étais déjà bluffé par la carte à l’époque. Par contre quand j’ai découvert GHI, là, ce fût une véritable claque!</p>
<h2>Il est chez GHI, il a tout compris!</h2>
<p>Bon, c’est surtout les gens de GHI qui ont tout compris:</p>
<ul>
<li>Bien qu’ayant une gamme hardware inégalée, ils sont loin de miser uniquement sur le matériel.</li>
<li>Ils ont une approche très active sur la technologie NetMF: la surcouche qu’ils développent par le biais de leur <a href="http://www.tinyclr.com/dl/" target="_blank">SDK</a> apporte de nombreuses fonctionnalités.</li>
<li>Ils ont une approche très Open Source et active sur la communauté NetMF. Comme je le disais plus haut, ils sont à la base de <a href="http://www.tinyclr.com">www.tinyclr.com</a>.</li>
<li>Ils sont à l’origine du développement des drivers de pas mal de capteur/add-ons.</li>
</ul>
<h2>La gamme FEZ de GHI</h2>
<p>Il y a globalement deux gammes chez GHI:</p>
<ul>
<li><a href="http://www.ghielectronics.com/catalog/category/34/">.Net modules/chipset</a>: c’est la première gamme de produit qu’ils ont développés, elle est orientée pro/oem.</li>
<li><a href="http://www.ghielectronics.com/catalog/category/7/">.Net FEZ</a>: c’est la dernière gamme en date, basé sur les chipset de la première gamme, FEZ est destiné aux hobbyistes et pour l’éducation principalement.</li>
</ul>
<p>Dans 99% des cas vous aurez tout intérêt à débuter avec la gamme FEZ, elle est clairement la plus fournit et la plus en avance. Si jamais vous souhaitez industrialiser votre solution, il sera toujours possible de se rabattre en production sur les chipset de la gamme pro (sans aucune adaptation logicielle).</p>
<h4>Comparatif de la gamme FEZ</h4>
<p><a href="http://loicbaumann.fr/wp-content/uploads/2011/06/image12.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://loicbaumann.fr/wp-content/uploads/2011/06/image_thumb12.png" width="727" height="152" /></a></p>
<p>L’URL n’est pas facile à trouver, mais il existe une page sur le site de GHI qui compare les différentes cartes qu’ils vendent:   <br /><a title="http://www.ghielectronics.com/catalog/compare/" href="http://www.ghielectronics.com/catalog/compare/">http://www.ghielectronics.com/catalog/compare/</a>.</p>
<p>Parmi les distinctions entre les cartes, on notera:</p>
<p><strong>Package</strong>: Spécifique pour Cobra et Rhino, compatible Arduino pour Domino et Panda II, compatible Parallax pour Mini.</p>
<p><strong>CPU</strong>: Le même partout, un 72Mhz 32-bit ARM.</p>
<p><strong>Mémoire vive</strong>: Pour la Cobra:<strong>12MB (12 000KB) de RAM disponible</strong>. Pour les autres 62K! Autant dire qu’il y a une sacré différence.</p>
<p><strong>Mémoire Flash utilisateur</strong>: Pour la Cobra: 3MB (3 000KB). Pour les autres 148KB.</p>
<p><strong>Couche Graphique</strong>: La Cobra dispose d’un vraie couche de représentation. Pour les autres on se contentera des fonctionnalités de base.</p>
<p><strong>Consommation électrique</strong>: Pour la Cobra 220mA/180mA (active/idle). Pour les autres env 100mA/65mA.</p>
<h4>Faire son choix</h4>
<p>Si vous souhaitez développer des programmes embarqués qui nécessitent de la mémoire vive, manipuler une base de données et/ou disposer d’une interface graphique alors vous devrez vous orientez vers la <strong>FEZ Cobra</strong> (pour un prix de 140€ env).</p>
<p>Si vous restez dans le cadre de la robotique et que les contraintes de mémoire vives (62K, c’est quand même pas beaucoup de nos jours) ne vous pose pas de problème alors la <strong>FEZ</strong> <strong>Domino</strong> sera le bon choix: la différence de prix avec la Panda II ne mérite pas de s’en priver, son Package est compatible avec les Arduino et vous apprécierez la connectique présente (pour un prix de 55€ env)</p>
<p>Si l’encombrement est votre contrainte principale, alors la <strong>FEZ Mini </strong>sera certainement vous séduire.</p>
]]></content:encoded>
			<wfw:commentRss>http://loicbaumann.fr/en/2011/06/25/quelle-carte-choisir/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello .Net Micro framework world!</title>
		<link>http://loicbaumann.fr/en/2011/06/25/hello-net-micro-framework-world/</link>
		<comments>http://loicbaumann.fr/en/2011/06/25/hello-net-micro-framework-world/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 22:35:12 +0000</pubDate>
		<dc:creator>Loïc Baumann</dc:creator>
				<category><![CDATA[Robotique]]></category>
		<category><![CDATA[NetMF]]></category>

		<guid isPermaLink="false">http://loicbaumann.fr/en/2011/06/25/hello-net-micro-framework-world/</guid>
		<description><![CDATA[Je commence par la petite phrase bien connu des programmeurs pour annoncer que je me met à la robotique. Le mot est bien grand pour l’instant car je vais essayer de faire clignoter des LED et tourner des moteurs, mais bon, il parait que c’est de la robotique et puis j’ai de l’ambition! Je vais [...]]]></description>
			<content:encoded><![CDATA[<p>Je commence par la petite phrase bien connu des programmeurs pour annoncer que je me met à la robotique. Le mot est bien grand pour l’instant car je vais essayer de faire clignoter des LED et tourner des moteurs, mais bon, il parait que c’est de la robotique et puis j’ai de l’ambition! <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Rire" src="http://loicbaumann.fr/wp-content/uploads/2011/06/wlEmoticon-openmouthedsmile.png" /></p>
<p>Je vais cross-poster sur mon blog ainsi que sur le nouveau blog <a href="http://so-bot.net/" target="_blank">Solution Robotique .Net</a>. </p>
<p>Vous l’aurez deviné, en tant que fan de .Net je me tourne sur une solution .Net Micro Framework, du .Net qui tourne sur une petit carte de quelques centimes carrés: c’est quand même tripant!</p>
<p>A plus pour de nouvelles aventures!</p>
]]></content:encoded>
			<wfw:commentRss>http://loicbaumann.fr/en/2011/06/25/hello-net-micro-framework-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugger Canvas pour Visual Studio 2010</title>
		<link>http://loicbaumann.fr/en/2011/06/16/debugger-canvas-pour-visual-studio-2010/</link>
		<comments>http://loicbaumann.fr/en/2011/06/16/debugger-canvas-pour-visual-studio-2010/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 08:15:24 +0000</pubDate>
		<dc:creator>Loïc Baumann</dc:creator>
				<category><![CDATA[Dev]]></category>
		<category><![CDATA[Pro]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>

		<guid isPermaLink="false">http://loicbaumann.fr/en/?p=383</guid>
		<description><![CDATA[Microsoft vient de sortir par le biais de son DevLabs une nouvelle addition à Visual Studio 2010: le Debugger Canvas. La release actuelle est le fruit de recherche, ce n’est peut être pas encore “production ready”, mais on peut tout de même s’en servir dès aujourd’hui. Lorsque l’on débugge, ce qui nous intéresse c’est le [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft vient de sortir par le biais de son <a href="http://msdn.microsoft.com/en-us/devlabs/cc950527" target="_blank">DevLabs</a> une nouvelle addition à Visual Studio 2010: le <a href="http://msdn.microsoft.com/en-us/devlabs/debuggercanvas" target="_blank">Debugger Canvas</a>.</p>
<p>La release actuelle est le fruit de recherche, ce n’est peut être pas encore “production ready”, mais on peut tout de même s’en servir dès aujourd’hui.</p>
<p>Lorsque l’on débugge, ce qui nous intéresse c’est le flow d’exécution du programme, lorsque l’on fait du pas à pas et que l’on se retrouve sur un appel de méthode on peut choisir de faire un step-into pour débugger son implémentation, avec un débugger classique un nouveau fichier sera ouvert (celui qui contient la méthode en question).</p>
<p>L’approche du Debug Canvas est différente, comme son nom l’indique la session de débugge n’est plus constituée d’une liste de fichiers mais d’un unique canevas.</p>
<p>Lorsque l’on démarre une session de debug et qu’un breakpoint est activé, le canevas s’affiche, il est constitué d’un “code bubble” qui représente l’implémentation de la méthode qui contient le breakpoint en question. </p>
<p><a href="http://loicbaumann.fr/wp-content/uploads/2011/06/image8.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://loicbaumann.fr/wp-content/uploads/2011/06/image_thumb8.png" width="570" height="363" /></a></p>
<p>  <span id="more-383"></span>
<p>Chaque “step-into” affichera un nouveau Code Bubble représentant l’implémentation de la nouvelle méthode en cours, une flèche relient les deux bubble pour indiquer la relation “appelant/implémentation”.</p>
<p><a href="http://loicbaumann.fr/wp-content/uploads/2011/06/image9.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://loicbaumann.fr/wp-content/uploads/2011/06/image_thumb9.png" width="644" height="361" /></a></p>
<p>Si la session de débugge se prolonge, on aura évidemment beaucoup de bublle, mais les possibilités de zoom/pan, le focus automatique sur une bubble et l’agencement du layout sont bien implémentées. On aura bien sûr la possibilité de faire du ménage.</p>
<p><a href="http://loicbaumann.fr/wp-content/uploads/2011/06/image10.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://loicbaumann.fr/wp-content/uploads/2011/06/image_thumb10.png" width="244" height="226" /></a></p>
<p>Le canevas servira de hôte à plusieurs composantes:</p>
<ul>
<li>Code Bubble: une petite fenêtre qui affiche l’implémentation d’un méthode faisant partie de la session de débug. C’est une version “miniature” de la fameuse Code Window de Visual Studio.</li>
<li>Local values: les variables (et leur valeurs) associées à un Code Bubble. Nous aurons la possibilité de créer des snapshots des valeurs afin de pouvoir constater/comparer les évolutions dans le temps.</li>
<li>Notes: des annotations que l’on peut faire pour apporter des compléments d’information (explication du comportement du code, indication sur la résolution, etc.).</li>
</ul>
<p>Pour pourra l’exporter en XPS afin de partager sa session de débugge avec l’équipe (d’où l’utilité d’avoir des Notes).</p>
<p>Je vous conseille de regarder la vidéo disponible sur la <a href="http://msdn.microsoft.com/en-us/devlabs/debuggercanvas" target="_blank">page de l’add-in</a> et de télécharger celui-ci.</p>
<p>A noter que celui-ci demande pour l’instant un Visual Studio 2010 <strong>Ultimate</strong>.</p>
<p>Pour ma part je trouve l’expérience très intéressante, je débugge avec depuis peu et j’attend de prendre un peu de recul (d’avoir plus de pratique) pour savoir exactement quand s’en servir car vous avez toujours la possibilité d’utiliser le débogage classique.</p>
<p>En tout cas je ne peux qu’être impressionné par la puissance de Visual Studio 2010 qui offre toutes les bases nécessaires à développer ce genre d’outil en se consacrant directement à l’essentiel. Les investissements pour faire une refonte de l’IDE en WPF ainsi que la nouvelle structure d’extensibilité portent leurs fruits!</p>
]]></content:encoded>
			<wfw:commentRss>http://loicbaumann.fr/en/2011/06/16/debugger-canvas-pour-visual-studio-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

