====== Conversion Blockly@rduino → µcBlockly ======
Ce document décrit le script **''npm run convert-rduino''**, qui transforme une sauvegarde Blockly@rduino (XML / ''.B@'') en workspace JSON chargeable dans µcBlockly.
===== Usage =====
npm run convert-rduino -- [fichier-sortie.json]
Exemple :
npm run convert-rduino -- chemin/vers/projet.xml out/workspace.json
Exemple (si le dépôt voisin Blockly@rduino est présent, comme pour les tests) :
npm run convert-rduino -- ../Blockly-at-rduino/examples/blink/blink.xml out/workspace.json
* **Entrée** : ''.xml'', ''.B@'' ou tout export XML Blockly@rduino (« enregistrer projet »).
* **Sortie** : JSON compatible avec **Ouvrir** dans µcBlockly (''workspace.json'' par défaut si le second argument est omis).
===== Comportement =====
^ Cas ^ Traitement ^
| Blocs Arduino de base | Mappés vers les types µcBlockly via ''scripts/lib/rduino-block-map.mjs'' |
| Blocs « définitions » orange (''base_define_bloc'') | Dépliés en blocs racine |
| Piles sans ''setup'' / ''loop'' | Enveloppées dans ''board_base_setup_loop'' (corps ''loop'') sauf si ''UCB_NO_WRAP=1'' |
| Extensions (Grove, mBot, TechnoZone, …) | Conservées sous leur nom d’origine si non mappées — peuvent ne pas charger ; voir ''unmappedBlockTypes'' dans la sortie |
===== Variable d'environnement =====
UCB_NO_WRAP=1 npm run convert-rduino -- projet.xml out.json
Ne pas envelopper les blocs orphelins dans ''setup''/''loop''.
===== Fichiers concernés =====
^ Fichier ^ Rôle ^
| ''scripts/convert-rduino-workspace.mjs'' | Point d’entrée CLI |
| ''scripts/lib/rduino-block-map.mjs'' | Table de correspondance des types de blocs |
| ''scripts/lib/rduino-xml-to-ucb-json.mjs'' | Parsing XML → JSON workspace |
| ''tests/rduino-convert.test.ts'' | Tests (blink, analogique, Starter_Kit_prj7) |
===== Limites connues =====
* Couverture limitée au **cœur Arduino** ; les extensions matérielles nécessitent d’étendre la table de mapping.
* Les projets très anciens ou fortement personnalisés peuvent exiger une reprise manuelle de certains blocs.
===== Voir aussi =====
* [[fr:arduino:ucblockly:architecture|Architecture]] — scripts npm ;
* [[fr:arduino:ucblockly:integration|Intégration]] — intégration du dépôt.