This shows you the differences between two versions of the page.
sde2:teme:tema_fr_2_microbit_busybox [2021/03/24 18:42] alexandra.state2607 [Micro:bit busybox] |
sde2:teme:tema_fr_2_microbit_busybox [2021/04/06 16:37] (current) ioana_maria.culic [Commandes supportées] |
||
---|---|---|---|
Line 6: | Line 6: | ||
Date limite: **7 Avril, 23:55**\\ | Date limite: **7 Avril, 23:55**\\ | ||
Points: **1 point** de la note finale\\ | Points: **1 point** de la note finale\\ | ||
- | Téléchargement du devoir: \\ | + | Téléchargement du devoir: [[https://classroom.github.com/a/1owyePFX|Devoir 2]] |
- | Télécharger en retard: **1 points / jour** (maximum 4 jours)\\ | + | |
</note> | </note> | ||
+ | |||
Line 22: | Line 22: | ||
- Le devoir doit contenir un fichier nommé //Readme// avec des explications concernant la manière choisie pour résoudre le devoir (-0.1p) | - Le devoir doit contenir un fichier nommé //Readme// avec des explications concernant la manière choisie pour résoudre le devoir (-0.1p) | ||
- | - Le devoir doit être implémenté en Python et seulement en utilisant des fonctions POSIX (la bibliothèque **[[https://docs.python.org/3/library/os.html|os]]** de Python). Toute autre implémentation conduira à l'annulation du devoir.(**0 points**) | + | - Le devoir doit être implémenté en Python et seulement en utilisant des fonctions MicroPython. Toute autre implémentation conduira à l'annulation du devoir.(**0 points**) |
<note warning> | <note warning> | ||
- | Utilisez uniquement la bibliothèque Python ** [[https://docs.python.org/3/library/os.html|os]] **, pas la bibliothèque Python posix. | + | Utilisez uniquement les bibliothèques MicroPython ** [[https://microbit-micropython.readthedocs.io/en/v1.0.1/os.html|os]] ** et [[https://microbit-micropython.readthedocs.io/en/v1.0.1/microbit_micropython_api.html|microbit]] |
</note> | </note> | ||
Line 69: | Line 69: | ||
Les commandes supportées par l'application mini-busybox sont: | Les commandes supportées par l'application mini-busybox sont: | ||
- | ==== Comenzi suportate ==== | + | ==== Commandes supportées ==== |
Ensuite, on va definir les commandes prises en charge par l'utilitaire, ainsi que le comportement caractéristique et les paramètres qu'elles prennent en charge. Pour autre commande ou format, le script affichera le message **Invalid command**. | Ensuite, on va definir les commandes prises en charge par l'utilitaire, ainsi que le comportement caractéristique et les paramètres qu'elles prennent en charge. Pour autre commande ou format, le script affichera le message **Invalid command**. | ||
+ | Si la commande reçue par l'utilitaire a été exécutée avec succès, il affichera les informations mentionnées dans la description, si c'est le cas. Sinon, un message d'erreur spécifique sera affiché, mentionné dans la description de la commande. Sauf indication contraire, le message affiché à l'écran sera suivi de NEWLINE et le prompt sera affichée sur la ligne suivante. | ||
+ | <note> | ||
+ | Les paramètres [paramètre] sont optionnels, et ce qui a la forme <parametre> sont obligatoires | ||
+ | </note> | ||
+ | |||
+ | Les ommandes supportées sont: | ||
+ | * **led [paramètre] x y** - on contrôle la LED du micro:bit mis sur la ligne ''x'' et colonne ''y''. En fonction de paramètres reçus, la commande va réaliser les suivantes actions: | ||
+ | * **on** - allume la LED | ||
+ | * **of** - éteindre la LED | ||
+ | * **blink <interval> <count> ** - fait la LED clignoter dans l'intervalle ''interval'' millisecondes de ''count'' fois. La valeur pour ''count'' va avoir une valeur entre l'intervalle 0-20. | ||
+ | * ** toggle ** - changer la LED à l'état opposé(si la LED est allumée, l'éteint et s'il est éteint, l'allume) | ||
+ | * ** brightness [set <val>] ** - utilisée sans le paramètre ''set'', il va afficher la luminosité de la LED spécifiée | ||
+ | * **set <val> ** - s’il va être utilise le paramétré set, il va mettre la luminosité a la valeur ''val'', ou ''val'' est un numéro entier 0-9, et la valeur afficher dans la console est la nouvelle luminosité | ||
+ | |||
+ | La commande va afficher les suivantes erreurs pour les suivantes cas: | ||
+ | * **Invalid LED.** -si les valeurs de x et / ou y ne sont pas entre 0 et 4 | ||
+ | * ** Invalid count value.** - si la valeur du ''count'' n'est pas comprise entre 0 et 20. | ||
+ | * ** Invalid brightness.** - si la valeur pour ''val'' est en dehors de l'intervalle 0-9. | ||
+ | |||
+ | == Exemple == | ||
+ | |||
+ | <code bash> | ||
+ | cmd: led on 2 3 | ||
+ | cmd: led off 2 3 | ||
+ | cmd: led blink 500 30 2 3 | ||
+ | Invalid count value. | ||
+ | cmd: led toggle 2 3 | ||
+ | cmd: led brightness set 4 2 4 | ||
+ | 4 | ||
+ | cmd: led brightness 2 4 | ||
+ | 4 | ||
+ | </code> | ||
+ | |||
+ | * **button <button>** - ''button'' peut prendre la valeur ''A'' ou ''B'', représentant l'un des deux boutons du dispositif. La commande affiche le texte True si le bouton spécifié est pressé et le texte False si le bouton n'est pas pressé. | ||
+ | |||
+ | La commande affichera les erreurs suivantes dans les cas suivants: | ||
+ | * **Invalid button.** - si le ''button'' est different de 'a' ou 'b' | ||
+ | |||
+ | == Exemple == | ||
+ | |||
+ | <code bash> | ||
+ | cmd: button a | ||
+ | True | ||
+ | cmd: button b | ||
+ | False | ||
+ | </code> | ||
+ | |||
+ | * **light** - va affiche la valeur du capteur de lumière du dispositif . | ||
+ | |||
+ | == Exemple == | ||
+ | |||
+ | <code bash> | ||
+ | cmd: light | ||
+ | 100 | ||
+ | </code> | ||
+ | |||
+ | * **temperature <deg>** - En function de valeur du ''<deg>'' qui peu etre ''C/F/K'' la température prise par le capteur de température en degrés Celsius, Fahrenheit ou Kelvin sera affichée. | ||
+ | |||
+ | <note> | ||
+ | Pour la conversion des degrés Celsius en Fahrenheit, la formule sera utilisée: F = C * 1.8 + 32. | ||
+ | </note> | ||
+ | |||
+ | == Exemple == | ||
+ | |||
+ | <code bash> | ||
+ | cmd: temperature c | ||
+ | 20 | ||
+ | cmd: temperature f | ||
+ | 68 | ||
+ | </code> | ||
+ | |||
+ | * ** echo [paramètre] argumente [>/» fisier]** - Affiche les arguments dans la console suivis de la nouvelle ligne. | ||
+ | * **-n** | ||
+ | * ** > fichier** - redirige le texte qui sera affiché par la commande echo dans le fichier ''fichier'', et rien ne sera pas affiché sur l'écran. Si le fichier n'existe pas, il sera créé. Si le fichier existe, son contenu sera overwritten. | ||
+ | * ** >> fichier** - redirige le texte qui sera affiché par la commande echo dans le fichier, et rien ne sera pas affiché sur l'écran. Si le fichier n'existe pas, la commande échouera et affichera le message d'erreur: ''Cannot append redirectn.'' Si le fichier existe, son contenu sera ajouté à ce qui existe déjà dans le fichier. | ||
+ | |||
+ | == Exemple == | ||
+ | |||
+ | <code bash> | ||
+ | cmd: echo a b c | ||
+ | a b c | ||
+ | cmd: echo -n a b c | ||
+ | a b ccmd: echo my awesome text > my_awesome_file | ||
+ | </code> | ||
+ | |||
+ | * **cat fichier** - fait la concatenation du fichier, et l'affiche à la sortie standard. En cas d'erreur, le texte sera affiché: ''Cannot print file.'' | ||
+ | |||
+ | == Exemple == | ||
+ | |||
+ | <code bash> | ||
+ | cmd: cat file1 | ||
+ | Text in file1 | ||
+ | cmd: cat file2 | ||
+ | Text in file 2 | ||
+ | cmd: cat file1 file2 | ||
+ | Text in file1 | ||
+ | Text in file 2 | ||
+ | cmd: cat f | ||
+ | Cannot print file. | ||
+ | </code> | ||
+ | |||
+ | * **mv source destination** - renommez le fichier source en destination. En cas d'erreur, il affichera le message: ''Cannot move file.'' | ||
+ | |||
+ | == Exemple == | ||
+ | |||
+ | <code bash> | ||
+ | cmd: mv my_file my_file2 | ||
+ | cmd: mv f f2 | ||
+ | Cannot move file. | ||
+ | </code> | ||
+ | |||
+ | * **rm [option] fichier** - supprimez les fichiers transmis comme paramètre. Sans options, il supprime seulement les fichiers vides. Si une tentative est faite pour supprimer un fichier qui n'est pas vide, le message d'erreur s'affiche: ''Cannot remove file. File not empty.'' | ||
+ | * **--r, --R, --recursive** effacer les fichieres meme si ils sont vides ou pas. | ||
+ | |||
+ | En cas d'une autre erreur de suppression sauf Fichier non vide, le message sera affiché: ''Cannot remove file.'' | ||
+ | |||
+ | == Exemple == | ||
+ | |||
+ | <code bash> | ||
+ | cmd: rm my_file1 my_file2 | ||
+ | cmd: rm my_file | ||
+ | Cannot remove file. File not empty. | ||
+ | cmd: rm -R my_file | ||
+ | </code> | ||
+ | |||
+ | * **ls [opțiuni] ** - va afficher le contenu du répertoire. Sans l'option **-a / –all**, les fichiers cachés(dont les noms commencent par.) ne sont pas affiche. Ne sont pas affichés. S'il reçoit un nom de fichier comme paramètre, il affichera le paramètre lui-même. Chaque fichier sera affiché sur une nouvelle ligne. | ||
+ | * **-a, --all** - affiche t les fichiers / répertoires cachés (dont les noms commencent par.) | ||
+ | * **-l, --long** affiche les informations en ce qui concerne la taille du fichier sous la forme: ''taille nom'' | ||
+ | |||
+ | == Exemple == | ||
+ | |||
+ | <code bash> | ||
+ | cmd: ls | ||
+ | File1 | ||
+ | file2 | ||
+ | cmd: ls -a | ||
+ | File1 | ||
+ | File2 | ||
+ | .hidden | ||
+ | cmd: ls -l -a | ||
+ | 128 f1 | ||
+ | 0 f2 | ||
+ | 20 .f3 | ||
+ | </code> | ||
+ | |||
+ | * **cp source destination** - copier un fichier avec le nom de la destination. En cas d'erreur, le message affiché sera: ''Cannot copy file'' | ||
+ | |||
+ | == Exemple == | ||
+ | |||
+ | <code bash> | ||
+ | cmd: cp my_file my_file2 | ||
+ | </code> | ||
+ | * **set <var> <cmd>** - Sauvegarder le résultat obtenu après l'exécution de la commande ''cmd'' dans la variable ''var''. La valeur de la variable sera prise en utilisant la construction ''$var'', où var est le nom de la variable. | ||
+ | |||
+ | == Exemple == | ||
+ | |||
+ | <code bash> | ||
+ | cmd: set led_x 2 | ||
+ | cmd: set led_y 3 | ||
+ | cmd: led on $led_x $led_y | ||
+ | </code> | ||
+ | |||
+ | <note warning> | ||
+ | Si une commande n'est pas utilisée conformément à la documentation et que le cas n'est pas traité par les erreurs décrites ci-dessus, le message affiché sera ''Invalid command''. | ||
+ | |||
+ | ** Exemple ** | ||
+ | |||
+ | <code bash> | ||
+ | cmd: led 2 3 | ||
+ | Invalid command. | ||
+ | cmd: bright | ||
+ | Invalid command. | ||
+ | </code> | ||
+ | |||
+ | </note> | ||
+ | |||
+ | |||
+ | ===== Règles d'implentation ===== | ||
+ | |||
+ | * Pour implemneter le devoir on va utiliser MicroPython pour Micro:bit | ||
+ | * Le fichier généré va avoir le nom **main.py**, c'est le fichier que le système de test prendra en compte. | ||
+ | * Pour implémenter les commandes prises en charge, toutes les opérations seront effectuées en utilisant uniquement les fonctions POSIX dans la bibliothèque **os** spécifique à MicroPython (https://microbit-micropython.readthedocs.io/en/v1.0.1/os.html) et la biliotheuque [[https://microbit-micropython.readthedocs.io/en/v1.0.1/microbit_micropython_api.html|microbit]]. | ||
+ | * Le programme implémenté doit avoir un comportement générique. Si nous remarquons que le sujet est résolu que pour passer certains tests spécifiques, les points correspondant à ces tests seront annulés du score total. | ||
+ | |||
+ | |||
+ | <note warning> | ||
+ | N'utilisez que des bibliothèques [[https://microbit-micropython.readthedocs.io/en/v1.0.1/os.html|MicroPython os]] et [[https://microbit-micropython.readthedocs.io/en/v1.0.1/microbit_micropython_api.html|microbit]]. | ||
+ | </note> | ||
+ | |||
+ | ===== Envoier et tester le devoir ===== | ||
+ | |||
+ | Le devoir sera téléchargé sur Github. Connectez-vous au site et accédez au lien correspondent au devoir. | ||
+ | |||
+ | <note info> | ||
+ | Le devoir sera automatiquement testé sur Github pour 40 / 100p. Le reste des tests seront exécuté manuellement, à condition que le devoir obtienne au moins 20p des 40p obtenus par des tests automatiques. | ||
+ | |||
+ | Les tests manuels seront effectués en exécutant les commandes suivantes: | ||
+ | <code bash> | ||
+ | $ git clone <your_repository> | ||
+ | $ python3 main.py < input_test.in | ||
+ | </code> | ||
+ | Les fichiers d'entrée pour les tests manuels sont disponibles sur [[https://ocw.cs.pub.ro/courses/sde2/teme/tema_ro_2_microbit_busybox?&#trimiterea_si_verificarea_temei|github]]. | ||
+ | |||
+ | Chaque fichier contient le score du test sur la première ligne. | ||
+ | </note> |