{"id":1871,"date":"2026-03-12T16:25:41","date_gmt":"2026-03-12T15:25:41","guid":{"rendered":"https:\/\/coding4phone.com\/?p=1871"},"modified":"2026-03-20T16:15:06","modified_gmt":"2026-03-20T15:15:06","slug":"mogwai-en-production-quand-un-langage-de-script-donne-vie-a-un-banc-de-test-industriel","status":"publish","type":"post","link":"https:\/\/coding4phone.com\/?p=1871","title":{"rendered":"MOGWAI en production : quand un langage de script donne vie \u00e0 un banc de test industriel"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>Cas d&rsquo;usage n\u00b01 \u2014 Banc de test pour cartes \u00e9lectroniques<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Le probl\u00e8me, pos\u00e9 simplement<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Imaginez une soci\u00e9t\u00e9 qui fabrique des produits \u00e9lectroniques. Deux gammes, deux architectures (LoRaWAN + BLE, 4G + BLE), deux types de cartes \u2014 une carte <strong>power<\/strong> et une carte <strong>processing<\/strong> \u2014 \u00e0 tester s\u00e9par\u00e9ment puis assembl\u00e9es. En tout, cinq sc\u00e9narios de test distincts, chacun compos\u00e9 de plusieurs dizaines de v\u00e9rifications : tensions, niveaux logiques, couleurs de voyants LED, programmation du microcontr\u00f4leur, configuration LoRaWAN, communication avec un serveur\u2026<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"289\" height=\"300\" data-attachment-id=\"1877\" data-permalink=\"https:\/\/coding4phone.com\/?attachment_id=1877#main\" data-orig-file=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img13.png?fit=963%2C1000&amp;ssl=1\" data-orig-size=\"963,1000\" data-comments-opened=\"1\" data-image-title=\"img13\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img13.png?fit=963%2C1000&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img13.png?resize=289%2C300&#038;ssl=1\" alt=\"Carte de circuit imprim\u00e9 avec plusieurs composants \u00e9lectroniques, y compris des puces et des connecteurs d'antenne, sur un fond gris.\" class=\"wp-image-1877\" srcset=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img13.png?resize=289%2C300&amp;ssl=1 289w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img13.png?resize=768%2C798&amp;ssl=1 768w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img13.png?w=963&amp;ssl=1 963w\" sizes=\"auto, (max-width: 289px) 100vw, 289px\" \/><figcaption class=\"wp-element-caption\">L&rsquo;une des cartes \u00e9lectroniques \u00e0 tester.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Et le cahier des charges, redoutable dans sa simplicit\u00e9 apparente :<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Le programme PC doit \u00eatre <strong>le m\u00eame pour tous les tests<\/strong>, pr\u00e9sents et futurs. Il ne doit <strong>jamais \u00eatre modifi\u00e9 ni recompil\u00e9<\/strong> pour ajouter un nouveau test. Les tests doivent pouvoir \u00eatre <strong>mis \u00e0 jour \u00e0 distance<\/strong>, chez les sous-traitants, sans intervention sur le logiciel.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">En d&rsquo;autres termes : <strong>un programme fig\u00e9, des tests vivants<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">La solution : embarquer un runtime de script<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La r\u00e9ponse \u00e0 ce probl\u00e8me, c&rsquo;est d&#8217;embarquer <strong>le runtime MOGWAI<\/strong> dans l&rsquo;application WinForm .NET du banc de test.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Au lieu de coder chaque s\u00e9quence de test en C#, on l&rsquo;\u00e9crit en MOGWAI. Le programme PC devient un <strong>h\u00f4te<\/strong> : il g\u00e8re la communication USB avec l&rsquo;outillage de test, expose des fonctions \u00e9tendues au runtime (affichage, sons, interaction utilisateur), et se contente de <em>jouer<\/em> les scripts. Les scripts, eux, contiennent toute la logique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ajouter un nouveau test revient \u00e0 d\u00e9poser un nouveau dossier contenant ses fichiers MOGWAI. Pas une ligne de C# \u00e0 toucher.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Architecture du banc de test<\/h2>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">Programme PC (WinForm .NET)<\/div><div class=\"cm-line\">\u2502<\/div><div class=\"cm-line\">\u251c\u2500\u2500 Runtime MOGWAI (embarqu\u00e9)<\/div><div class=\"cm-line\">\u2502   \u251c\u2500\u2500 banc.mog          \u2190 biblioth\u00e8que partag\u00e9e par tous les tests<\/div><div class=\"cm-line\">\u2502   \u2502<\/div><div class=\"cm-line\">\u2502   \u251c\u2500\u2500 Test carte power\/<\/div><div class=\"cm-line\">\u2502   \u2502   \u251c\u2500\u2500 main.mog      \u2190 s\u00e9quence de test<\/div><div class=\"cm-line\">\u2502   \u2502   \u2514\u2500\u2500 config.mog    \u2190 param\u00e8tres de l&apos;outillage<\/div><div class=\"cm-line\">\u2502   \u2502<\/div><div class=\"cm-line\">\u2502   \u251c\u2500\u2500 Test processing LoRaWAN\/<\/div><div class=\"cm-line\">\u2502   \u2502   \u251c\u2500\u2500 main.mog<\/div><div class=\"cm-line\">\u2502   \u2502   \u2514\u2500\u2500 config.mog<\/div><div class=\"cm-line\">\u2502   \u2502<\/div><div class=\"cm-line\">\u2502   \u2514\u2500\u2500 ... (3 autres tests)<\/div><div class=\"cm-line\">\u2502<\/div><div class=\"cm-line\">\u2514\u2500\u2500 Fonctions h\u00f4te expos\u00e9es au runtime<\/div><div class=\"cm-line\">    (COM USB, UI, logs, sons...)<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le fichier <code>banc.mog<\/code> est le c\u0153ur de l&rsquo;affaire. Il contient toutes les fonctions communes \u00e0 l&rsquo;ensemble des tests : dialogue avec l&rsquo;outillage, programmation JLink, gestion du serveur, v\u00e9rifications de conformit\u00e9. Chaque test <code>main.mog<\/code> s&rsquo;appuie sur cette biblioth\u00e8que partag\u00e9e.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"793\" height=\"1000\" data-attachment-id=\"1880\" data-permalink=\"https:\/\/coding4phone.com\/?attachment_id=1880#main\" data-orig-file=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img11.png?fit=793%2C1000&amp;ssl=1\" data-orig-size=\"793,1000\" data-comments-opened=\"1\" data-image-title=\"img11\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img11.png?fit=793%2C1000&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img11.png?resize=793%2C1000&#038;ssl=1\" alt=\"Int\u00e9rieur d'une armoire \u00e9lectrique avec des fils color\u00e9s et des composants \u00e9lectroniques, y compris des relais et des circuits imprim\u00e9s.\" class=\"wp-image-1880\" style=\"width:600px\" srcset=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img11.png?w=793&amp;ssl=1 793w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img11.png?resize=238%2C300&amp;ssl=1 238w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img11.png?resize=768%2C968&amp;ssl=1 768w\" sizes=\"auto, (max-width: 793px) 100vw, 793px\" \/><figcaption class=\"wp-element-caption\">Le coffret : la partie \u00e9lectronique du banc. MOGWAI dialogue directement avec lui via liaison s\u00e9rie.<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ce que MOGWAI orchestre concr\u00e8tement<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Attente de mise sous tension de l&rsquo;outillage<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Avant de lancer un test, il faut s&rsquo;assurer que le coffret est aliment\u00e9. Plut\u00f4t qu&rsquo;un simple d\u00e9lai, MOGWAI effectue une mesure r\u00e9elle et attend une r\u00e9ponse valide :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">to 'WAIT_FOR_POWER_ON' params [signal: .string] do<br>{<br>    false -> 'showWaitForPower'<br><br>    forever do<br>    {<br>        \"AT+MEASURE:{! signal}\" eval COM.cwrite<br>        [COM.mread timeout: 1000 expected: (\"*\")] -> 'r'<br><br>        if (r->state \"Success\" !=) then<br>        {<br>            [UI.showModal icon: \"error\"<br>                message: \"Il y a un probl\u00e8me de communication avec le coffret !\"<br>                buttons: (\"ARRETER\")] drop<br>            mogwai.exit<br>        }<br>        else<br>        {<br>            if (r->answers \"Command fail\" contains) then<br>            {<br>                if (showWaitForPower not) then<br>                {<br>                    true -> 'showWaitForPower'<br>                    [UI.show icon: \"Warning\"<br>                        message: \"Veuillez alimenter le coffret...\"]<br>                }<br>                1000 wait<br>            }<br>            else<br>            {<br>                if (showWaitForPower) then { UI.hide }<br>                break<br>            }<br>        }<br>    }<br>}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La boucle interroge l&rsquo;outillage, affiche un message d&rsquo;invite si n\u00e9cessaire, et sort proprement d\u00e8s que la tension est d\u00e9tect\u00e9e. Aucun timeout arbitraire \u2014 on attend l&rsquo;\u00e9tat r\u00e9el.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Programmation du firmware via sonde JLink<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">MOGWAI pilote directement la sonde JLink pour programmer le microcontr\u00f4leur STM32WB55. Le script g\u00e9n\u00e8re dynamiquement le fichier de commandes JLink, lance le processus externe et attend son retour :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">to 'JLINK_FW_PROGRAMMING' do<br>{<br>    (! \"HOME\" $JLINK_FOLDER) dir.enter<br><br>    (<br>        !<br>        \"Erase 0x08000000 0x080B9FFF\"<br>        \"LoadFile {! $JLINK_FW_MASTER_FILE}\"<br>        \"Exit\"<br>    ) \"\\r\\n\" eval join ->ascii<br><br>    $JLINK_SCRIPT_FILE file.write<br><br>    [<br>        !<br>        PROCESS.start<br>        filename: $JLINK_PROGRAM<br>        arguments: \"-AutoConnect 1 -ExitOnError 1 -device STM32WB55RG<br>                    -if swd -speed 2000 -CommandFile {! $JLINK_SCRIPT_FILE}\"<br>        workingDirectory: $JLINK_FOLDER<br>        wait: true<br>    ]<br><br>    trap { $JLINK_SCRIPT_FILE file.purge }<br>}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La m\u00eame m\u00e9canique est utilis\u00e9e pour programmer la stack BLE et les option bytes \u2014 trois fonctions ind\u00e9pendantes, chacune g\u00e9n\u00e9rant son propre script JLink \u00e0 la vol\u00e9e.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. V\u00e9rification de voyants LED par analyse colorim\u00e9trique<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Le banc v\u00e9rifie que les voyants de la carte \u00e9mettent bien les bonnes couleurs. MOGWAI effectue une calibration initiale (10 mesures moyenn\u00e9es), puis compare chaque lecture aux plages RVB attendues :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">to 'GET_LED' params [name: .string timeout: .number save: .boolean<br>                     rMin: .number rMax: .number<br>                     gMin: .number gMax: .number<br>                     bMin: .number bMax: .number] do<br>{<br>    [COM.mwrite command: \"AT+LED:?\" timeout: 5000<br>        expected: (\"*,*,*,*\")] -> 'result'<br><br>    result (answers: 0) get \",\" split -> 'result'<br><br>    result 0 get hex-> $LED_INIT_R - -> 'r'<br>    result 1 get hex-> $LED_INIT_G - -> 'g'<br>    result 2 get hex-> $LED_INIT_B - -> 'b'<br><br>    r rMin >= r rMax &lt;= and -> 'rTest'<br>    g gMin >= g gMax &lt;= and -> 'gTest'<br>    b bMin >= b bMax &lt;= and -> 'bTest'<br><br>    if (rTest gTest bTest and and not) then<br>    {<br>        \"Non conforme !\" LOG.write<br>        EXECUTE_ON_ERROR_FUNCTION<br>    }<br>    else<br>    {<br>        \"Conforme.\" LOG.write<br>    }<br>}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4. R\u00e9silience serveur avec file d&rsquo;attente locale<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Quand la connexion au serveur est indisponible, les donn\u00e9es ne sont pas perdues. MOGWAI les s\u00e9rialise dans un fichier horodat\u00e9 et les renvoie automatiquement d\u00e8s que le serveur r\u00e9pond \u00e0 nouveau \u2014 sans intervention humaine :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Serveur inaccessible \u2192 on sauvegarde localement<br>content \"LB-{! year}{! month}{! day}-{! hour}{! minute}{! second}.mog\"<br>    eval file.pack<br><br>false -> '$SERVER_LAST_KNOWN_STATE'<br>'EVENT_SERVER_ERROR' null event.host.fire<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un processus de synchronisation tourne en arri\u00e8re-plan et traite la file d\u00e8s que la connexion revient.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"981\" data-attachment-id=\"1883\" data-permalink=\"https:\/\/coding4phone.com\/?attachment_id=1883#main\" data-orig-file=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img12.png?fit=1920%2C1839&amp;ssl=1\" data-orig-size=\"1920,1839\" data-comments-opened=\"1\" data-image-title=\"img12\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img12.png?fit=1024%2C981&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img12.png?resize=1024%2C981&#038;ssl=1\" alt=\"Machine de test \u00e9lectronique avec une carte imprim\u00e9e sur une base noire, sous un contenant transparent, sur un bureau.\" class=\"wp-image-1883\" srcset=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img12.png?resize=1024%2C981&amp;ssl=1 1024w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img12.png?resize=300%2C287&amp;ssl=1 300w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img12.png?resize=768%2C736&amp;ssl=1 768w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img12.png?resize=1536%2C1471&amp;ssl=1 1536w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img12.png?resize=1200%2C1149&amp;ssl=1 1200w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img12.png?w=1920&amp;ssl=1 1920w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Le lit \u00e0 clous permettant de positionner la carte \u00e0 tester et \u00e0 garantir la s\u00e9curit\u00e9 de l&rsquo;utilisateur.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ce que \u00e7a change en pratique<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Z\u00e9ro recompilation<\/strong> pour ajouter ou modifier un test. Le sous-traitant re\u00e7oit un nouveau dossier, le d\u00e9pose dans l&rsquo;application, c&rsquo;est pr\u00eat.<\/li>\n\n\n\n<li><strong>Mise au point rapide<\/strong> gr\u00e2ce \u00e0 MOGWAI STUDIO et son d\u00e9bogueur int\u00e9gr\u00e9 \u2014 les s\u00e9quences de plusieurs minutes se mettent au point pas \u00e0 pas.<\/li>\n\n\n\n<li><strong>\u00c9volutivit\u00e9 totale<\/strong> : si demain l&rsquo;outillage change de protocole de communication, on modifie <code>banc.mog<\/code>. Le programme PC, lui, ne bouge pas.<\/li>\n\n\n\n<li><strong>Tra\u00e7abilit\u00e9 compl\u00e8te<\/strong> : chaque test g\u00e9n\u00e8re un fichier de log horodat\u00e9, et les donn\u00e9es sont transmises au serveur (ou mises en attente) automatiquement.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo;application banc de test avec ses 5 s\u00e9quences est <strong>en production depuis octobre 2025<\/strong>, d\u00e9ploy\u00e9e chez les sous-traitants qui fabriquent les cartes \u00e9lectroniques. Elle est pr\u00e9vue pour tester <strong>plusieurs milliers de cartes chaque ann\u00e9e<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"867\" data-attachment-id=\"1885\" data-permalink=\"https:\/\/coding4phone.com\/?attachment_id=1885#main\" data-orig-file=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img14.png?fit=1684%2C1425&amp;ssl=1\" data-orig-size=\"1684,1425\" data-comments-opened=\"1\" data-image-title=\"img14\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img14.png?fit=1024%2C867&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img14.png?resize=1024%2C867&#038;ssl=1\" alt=\"Capture d'\u00e9cran d'un logiciel de test automatis\u00e9 montrant le code de configuration et le script principal, avec des \u00e9l\u00e9ments de d\u00e9bogage et des instructions pour l'utilisateur.\" class=\"wp-image-1885\" srcset=\"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img14.png?resize=1024%2C867&amp;ssl=1 1024w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img14.png?resize=300%2C254&amp;ssl=1 300w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img14.png?resize=768%2C650&amp;ssl=1 768w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img14.png?resize=1536%2C1300&amp;ssl=1 1536w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img14.png?resize=1200%2C1015&amp;ssl=1 1200w, https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/img14.png?w=1684&amp;ssl=1 1684w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Interface du banc de test en mode administrateur avec les outils pour d\u00e9velopper en MOGWAI directement.<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bilan<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MOGWAI y tourne quotidiennement, du d\u00e9marrage \u00e0 l&rsquo;arr\u00eat, sans accroc. Il programme les microcontr\u00f4leurs, v\u00e9rifie les tensions, lit les couleurs, dialogue avec le serveur, et g\u00e9n\u00e8re les logs de tra\u00e7abilit\u00e9 \u2014 tout cela en scripts interchangeables, sans toucher une seule ligne de l&rsquo;application h\u00f4te.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C&rsquo;est exactement le probl\u00e8me que MOGWAI \u00e9tait destin\u00e9 \u00e0 r\u00e9soudre.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u2192 <a href=\"https:\/\/github.com\/sydney680928\/mogwai\" target=\"_blank\" rel=\"noreferrer noopener\">D\u00e9couvrir MOGWAI sur GitHub<\/a><\/em><br><em>\u2192 <a href=\"https:\/\/sydney680928.github.io\/MOGWAI\/\" target=\"_blank\" rel=\"noreferrer noopener\">Essayer le Playground en ligne<\/a><\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un programme PC fig\u00e9, des tests vivants. Comment le runtime MOGWAI a permis de cr\u00e9er un banc de test industriel capable de tester plusieurs milliers de cartes \u00e9lectroniques par an \u2014 sans jamais modifier une ligne de code de l&rsquo;application h\u00f4te.<\/p>\n","protected":false},"author":1,"featured_media":1887,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"D\u00e9couvrez comment MOGWAI optimise les tests d'\u00e9quipements \u00e9lectroniques dans un banc de test automatis\u00e9, sans recompilation n\u00e9cessaire.","jetpack_seo_html_title":"Test de cartes \u00e9lectroniques : solution avec MOGWAI","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[8,25,1,7,6,43],"tags":[13,21],"class_list":["post-1871","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-csharp","category-uncategorized","category-iot","category-mogwai","category-windows","tag-dotnet","tag-mogwai"],"jetpack_publicize_connections":[],"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pfoe4s-ub","jetpack-related-posts":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/coding4phone.com\/wp-content\/uploads\/2026\/03\/28f700e9-490c-4b4a-9728-7bf7d460241d.jpg?fit=1024%2C1024&ssl=1","_links":{"self":[{"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/posts\/1871","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1871"}],"version-history":[{"count":20,"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/posts\/1871\/revisions"}],"predecessor-version":[{"id":2002,"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/posts\/1871\/revisions\/2002"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=\/wp\/v2\/media\/1887"}],"wp:attachment":[{"href":"https:\/\/coding4phone.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1871"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1871"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coding4phone.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1871"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}