Devoir 2 - Microbit Busybox

Informations générales

Date limite: 7 Avril, 23:55
Points: 1 point de la note finale
Téléchargement du devoir: Devoir 2

Connaissances évaluées

  • Utiliser le langage Python
  • Comprendre le mode de fonctionnement de la ligne de commande
  • Créer des fichiers
  • Utiliser les périphériques du Micro:bit

Règles

  1. Le devoir doit contenir un fichier nommé Readme avec des explications concernant la manière choisie pour résoudre le devoir (-0.1p)
  2. 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)

Utilisez uniquement les bibliothèques MicroPython os et microbit

Copiage

Le devoir est individuel. Toute tentative de copier entraînera 0p pour les devoirs. On utilisera un système automatisé pour détecter le copiage. Si on a des doutes, on va vous adresser des questions supplémentaires concernant le devoir.

Questions

Si vous avez des questions concernant le devoir, posez-les en publiant un issue sur le github https://github.com/UPB-FILS-SdE2/questions avec le format [busybox] <le titre de votre question>

NE PUBLIEZ PAS DE CODE SOURCE. Cela est considéré comme copiage et vous aller recevoir 0p pour le devoir.

Si vous voulez recevoir un e-mail lorsque des problèmes sont signalés ou lorsqu'il y a de nouveaux messages, accédez au site github repository et cliquez sur Watch.

Micro:bit busybox

Pour résoudre le devoir, vous allez réaliser un script de Python qui reçoit comme arguments la commande qu'on désire d'exécuter. L'exécutable va afficher un prompt qui a la forme cmd: , qui va recevra une commande suivie des paramètres. Appuyez sur la touche ENTER pour marquer la fin de la commande. Après chaque commande, le program va afficher le résultat, si c'est le cas, après quoi il attendra une autre commande. Le programme terminera son exécution en recevant la commande exit ou quit.

Exemple:

cmd: ls
test.py my_file my_file2
cmd: echo test
test
cmd: exit

Étant donné que le dispositif Micro: bit n' a pas une structure de répertoire hiérarchique, tous les fichiers seront dans le même répertoire racine où votre application est exécutée.

En ce qui suit, on va définir les commandes supportées par l'utilitaire, ainsi que le comportement caractéristique et les paramètres acceptés. Pour toute autre commande ou pour un format différent, le script va afficher 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, mentionné dans la description de la commande, sera affiché. Sauf indication contraire, le message affiché à l'écran sera suivi de NEWLINE et l'invite sera affichée sur la ligne suivante.

Les paramètres de la forme [paramètre] sont facultatifs, et ceux de la forme <paramètre> sont obligatoires.

Les commandes supportées par l'application mini-busybox sont:

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.

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.

Les paramètres [paramètre] sont optionnels, et ce qui a la forme <parametre> sont obligatoires

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
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
  • 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
cmd: button a
True
cmd: button b
False 
  • light - va affiche la valeur du capteur de lumière du dispositif .
Exemple
cmd: light
100
  • 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.

Pour la conversion des degrés Celsius en Fahrenheit, la formule sera utilisée: F = C * 1.8 + 32.

Exemple
cmd: temperature c
20
cmd: temperature f
68
  • 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
cmd: echo a b c
a b c
cmd: echo -n a b c
a b ccmd: echo my awesome text > my_awesome_file  
  • 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
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.
  • mv source destination - renommez le fichier source en destination. En cas d'erreur, il affichera le message: Cannot move file.
Exemple
cmd: mv my_file my_file2
cmd: mv f f2
Cannot move file.
  • 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
cmd: rm my_file1 my_file2
cmd: rm my_file
Cannot remove file. File not empty.
cmd: rm -R my_file
  • 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
cmd: ls
File1
file2
cmd: ls -a
File1
File2
.hidden
cmd: ls -l -a
128 f1
0 f2
20 .f3
  • cp source destination - copier un fichier avec le nom de la destination. En cas d'erreur, le message affiché sera: Cannot copy file
Exemple
cmd: cp my_file my_file2
  • 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
cmd: set led_x 2
cmd: set led_y 3
cmd: led on $led_x $led_y

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

cmd: led 2 3
Invalid command.
cmd: bright
Invalid command.

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 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.

N'utilisez que des bibliothèques MicroPython os et microbit.

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.

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:

$ git clone <your_repository>
$ python3 main.py < input_test.in

Les fichiers d'entrée pour les tests manuels sont disponibles sur github.

Chaque fichier contient le score du test sur la première ligne.

sde2/teme/tema_fr_2_microbit_busybox.txt · Last modified: 2021/04/06 16:37 by ioana_maria.culic
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0