radio MB projet 1
Séance qui comporte 3 TP:
solution du premier script: Communication radio, programmation POO: correction
Projet 1
But: Utiliser une règle d’authentification entre 2 cartes de votre réseau privé.
Votre reseau privé n’est pas à l’abris d’un utilisateur non invité. Vous souhaiteriez alors savoir de QUI vient le message reçu.
L’idée est d’utiliser la chaine de caractère émise pour y placer des informations, en plus du message. Ces informations pourraient identifier la carte émettrice. Ainsi, plutôt que d’envoyer:
la carte n°1 enverra:
Le programme recepteur pourra afficher les seuls messages qui proviennent de la carte amie (n°1 par exemple), pas les autres.
Pour les recepteurs du message, il faudra alors PARSER cette chaine. Parser signifie: diviser une chaîne de caractères en une liste de sous-chaînes.
Python offre une multitude de possibilités pour travailler avec des chaînes de caractères (strings): voir page du cours python sur les variables et string
Premier programme utilisant un notebook python
Dans un notebook (Atrium > Capytale) ou bien basthon.fr/, saisir les lignes suivantes:
- Dans une première cellule: composer le message:
- Dans une autre cellule: Parser le message:
Il faudra tranformer la chaine "1_la feve est dans la 3e part" en 2 chaines: "1" et "la feve est dans la 3e part".
- 3e cellule du notebook: Parser avec la méthode de string
split:
Quel avantage voyez vous avec la seconde méthode (
split)?
- Certains messages reçus peuvent être formatés différemment: Il se peut que ceux-ci ne comportent pas de séparateur
_. Après tout, vous pouvez recevoir des messages de très nombreux membres du reseau.
Que se passe t-il si vous appliquez systématiquement la méthode
splitau message reçu? Le micro contrôleur va t-il s’arrêter de fonctionner?
try ... except
Tester le programme avec chacune des propositions pour
stringData. Quel est le comportement de cette structure conditionnelletry..except?
Programmation de la carte microbit
Vous allez créer une communication avec un auteurs authentifiés dans un reseau à plusieurs cartes.
Vous allez mettre 4 cartes microbits dans un même réseau (Réglage dans l’instruction radio.config(channel = 7, power = 6, length = 32, group=0)). Choisir le même channel et le même group pour 4 cartes microbit.
Utiliser maintenant l’interface Python sur Vittascience.com pour réaliser les modifications.
Etape 1
A partir du programme initial, apporter les modifications pour:
- envoyer un message avec un numero d’identification à 2 chiffres. Ce numero doit être le même pour les cartes microbits du micro-reseau, et doit rester secret.
- afficher tout message qui commence par cet identifiant, pas les autres messages reçus. Il faudra utiliser une instruction conditionnelle sur le numéro de carte pour afficher (ou non) le message.
Programmer les méthodes de la classe
Communication_radio:
- la méthode
select_messagepour selectionner, et construire le message avant de l’expedier.- Et la méthode
parsepour lire le message. Cette méthode ne retourne la chaine de caractère QUE si le numero qui debute la chaine de caractères est celui du groupe.
Puis apporter les modifications necessaires pour faire fonctionner le programme.
Aide: ci-dessous le programme Python en programmation non fonctionnelle et non orientée objet. C’est le programme que vous devrez adapter en POO.
Etape 2
Modifier le programme pour accepter les message d’un groupe d’amis ayant plusieurs numeros distincts d’identification. Il faudra:
- modifier l’attribut
nombrepour qu’il ait le typelist. - et modifier les instructions où l’on interragit avec
nombre
Aide
Solution partielle: projet2_0_authentifier_POO.py