====== Le fichier *.s2e ====== ==== L'entête ==== Il s'agit d'un fichier texte (format JSON) pour décrire l'extension et les blocs. "extensionName": "Demo", // Son nom "description": "A Demo Extension for Arduino", // Sa description "version": "1.1", // Sa version "author": "Wangyu(wangyu@makeblock.cc)", // Son auteur "homepage": "http://www.mblock.cc/posts/create-extensions-for-mblock", // Sa page d'information "sort":0, // Son indice de tri dans la liste des extensions "javascriptURL":"js/demo.js", // Le fichier javascript pour son utilisation online "firmware":"1.0", // La version du firmware pour l'utilisation online [non utilisé] "extensionPort":0, // Le port utilisé pour l'extension (0 = port série) [non utilisé] "tags" : "makeblock,demo", // Les mots clés pour l'indexation ==== La définition des blocs ==== "blockSpecs": [ [ "w", // Type de bloc "digitalWrite( %n , %d.digital )", // Le texte qui apparait dans le bloc avec les paramètres "digitalWrite", // La fonction appelée en mode Scratch "13", // Le premier paramètre par défaut "HIGH", // Le deuxième paramètre par défaut { // Le code à insérer "inc":"", // dans l'include "def":"", // dans la définition des variables et constantes "setup":"pinMode({0},OUTPUT); \n", // dans le setup "loop":"", // dans la boucle principale "work":"digitalWrite({0},{1});\n" // à chaque utilisation du bloc } ] .... ] * Les types de blocs sont : * h pour l'entête (chapeau) rarement utilisé dans une extension personnelle * w pour un bloc d'écriture sur une sortie [--] * r pour un bloc de lecture d'une entrée (--) * b pour un bloc de test binaire <--> * Les paramètres sont préfixés par % dans la description du bloc : * %n pour un nombre * %s pour un texte * %d.nom pour une liste de choix de nombres (voir section "menu") * %m.nom pour une liste de choix de texte (voir section "menu") * %c pour choisir une couleur * Les paramètres sont identifiés par leur position dans la description du bloc {x} dans le code des fonctions * utiliser un #include du type \"lib.h\" et non ==== Les menus et valeurs ==== * Un menu est identifié par son nom et contient la liste des options possibles * Chaque option est associée à sa valeur "menus": { "digital":["HIGH","LOW"] }, "values":{ "HIGH":1, "LOW":0 ==== Les traductions ==== Les blocs peuvent être traduits automatiquement en fonction du langage choisi : "translators":{ "zh_CN":{ "Demo Program":"演示程序", "HIGH":"高电平", "LOW":"低电平", "digitalWrite( %n , %d.digital )":"数字口输出( %n ,%d.digital )" } }