Exercice Sous-partie 1 - Algorithme de calcul du checksum · Bac Sciences de l'Ingénieur Métropole 2021 (sujet 1)
Thème : Traitement de l'information : algorithmes et programmation · Tiré du sujet Métropole France 1 (2021)
Énoncé
Partie 1: Sciences de l'ingénieur
Système de télé-échographie robotisé: « MELODY »
Mise en situation
Une échographie médicale est un acte permettant de contrôler le bon fonctionnement d'organes (ou d'observer la croissance d'un fœtus lors d'une échographie obstétricale, photo ci-contre) et le cas échéant de déceler certaines pathologies. Cette observation « non invasive » et sans danger pour le patient est réalisée à l'aide d'une sonde échographique ultrasonore manipulée par un médecin « au plus près » du patient.
Cette proximité nécessite une manipulation précise de la sonde par le praticien afin de procéder à une exploration la plus complète possible de l'organe observé (ou de la zone à observer).
Le système d'échographie télé-robotisée à distance MELODY permet à un médecin ou praticien « expert » de réaliser un diagnostic en temps réel et à distance d'un patient.
Ce système repose sur l'architecture innovante suivante:
Un centre « expert » distant du lieu d'examen réel, avec un médecin « imageur » manipulant une « sonde fictive » similaire à une sonde réelle d'échographie, permet une prise de contrôle rapide et ergonomique à distance du robot.
L'ensemble est complété par un système de visioconférence permettant au médecin « imageur » distant de voir, de dialoguer et d'interagir avec son patient ainsi rassuré. En outre, l'ensemble des sites « experts » sont connectables aux sites « patients » existants, autorisant la mutualisation des diagnostics et la télé-expertise entre praticiens.
À l'autre extrémité, un professionnel de santé ne connaissant pas l'échographie (médecin généraliste, infirmier, aide-soignant, etc.) accompagne le patient et assiste le médecin « imageur » en positionnant le robot équipé d'une sonde réelle échographique sur le patient.
Dès lors, et après une procédure spécifique de prise de repères (synchronisation entre la position de la sonde fictive et celle réelle du bras par rapport au positionnement du patient distant), ce robot va reproduire avec précision tous les mouvements initiés par le médecin « imageur ».
Le système d'échographie à distance MELODY permet donc de répondre à une double problématique grandissante: celle de la désertification médicale, et celle du manque de médecins experts en échographie contraignant les patients à des déplacements importants pouvant entraîner des surcoûts en frais médicaux.
Partant de ce constat, ce « robot échographique » permet d'atteindre n'importe quel patient à proximité de son domicile. Son adaptation à des territoires isolés, reculés, à des populations éloignées, n'ayant pas accès au diagnostic médical échographique, lui confère une grande attractivité.
À noter également qu'en cas de pandémies (maladies infectieuses à grande échelle géographique), ces praticiens ne sont pas exposés aux patients et peuvent ainsi poursuivre leurs diagnostics en toute sécurité.
La figure ci-dessous représente le diagramme SysML de « cas d'utilisation » du robot Melody. Ce diagramme montre les services et interactions fonctionnelles proposés par ce produit.
Sous-partie 1 - Algorithme de calcul du checksum
Le code détecteur d'erreur (ou checksum) généré sur les 2 derniers octets de la trame et permettant de détecter si les données ont subi une altération lors de la transmission, repose sur un calcul allant du début de l'en-tête Trame jusqu'au paramètre .
Il s'agit d'une somme arithmétique de mots de 16 bits (2 octets), dont le résultat final est complémenté (ou inversé) « bit à bit ». Cette somme est constituée par l'association des différents octets de la trame de la figure 11, regroupés 2 à 2 selon le principe et les explications de la figure 12 ci-dessous.
Question 1.9: À partir des informations de la figure 12 et des éléments de langage spécifique du tableau ci-dessous, compléter sur le document réponse DR2 le programme python « checksum.py » partiel permettant de calculer le code détecteur d'erreur (ou checksum) spécifique à cette partie de trame.
Syntaxe (ou écriture) · Résultat (ou traitement des données réalisé)
a | b · « OU [|] » binaire (bit à bit) entre a et b
a & b · « ET [&] » binaire (bit à bit) entre a et b
a << n · a est décalé [<<] « vers la gauche » de n bits
a >> n · a est décalé [>>] « vers la droite » de n bits
~ a · les bits de a sont [~] inversés
a + b · somme arithmétique [+] de a avec b
# Programme "checksum.py"
liste=[0x54, 0x43, 0x01, 0x02, 0x02, 0x44, 0x00, 0x01,
0xda, 0x22, 0x05, 0xff, 0x00, 0x3a, 0x05, 0xce]
# Liste d'octets de l'entête Trame au paramètre φ
n=len(liste)
# extraction du nombre n d'octets de la liste précédente
checksum,i=0,0 # initialisation des variables
Compléter les zones manquantes de la boucle et du calcul final:
while i <:
val=(liste[i] <<) liste[i+ ]
checksum = checksum +
i=i+
checksum=( checksum & 0x0ffff)
# & 0x0ffff pour l'écriture du résultat final
# sur un format de 16 bits
print ("Checksum sur 16 bits:", hex(checksum))
# Affichage du code détecteur d'erreur en hexadécimal

Corrigé
Corrigé établi d’après les éléments de correction officiels
Condition d'arrêt de la boucle : while i < ... :
Réponse : n / 16
Décalage pour l'octet de poids fort : val=(liste[i] << ... )
Réponse : 8
Opérateur d'assemblage avec l'octet suivant : (liste[i] << 8 ) ... liste[i+1]
Réponse : + / |
Indice de l'octet de poids faible : liste[i+ ... ]
Réponse : 1
Ajout du mot de 16 bits formé : checksum = checksum + ...
Réponse : val
Incrémentation de l'indice : i=i+ ...
Réponse : 2
Opérateur d'inversion finale : checksum=( ... checksum & 0x0ffff)
Réponse : ~
L’explication pas à pas, faite avec l’IA, est réservée aux membres Premium. Premium
Résous-le ici : correction automatique, indices et corrigé détaillé.
‹ Exercice Sous-partie 3 (Choix 2) - Traitement de l'informa… · Métropole Candidat libre 2021 (sujet 1) · Exercice Sous-partie 1 - Algorithmique · Métropole 2021 (sujet 2) ›
Plus d’exercices de Traitement de l'information : algorithmes et programmation
- Exercice Sous-partie 1 - Traitement de l'information · Métropole 2023 (sujet 2)
- Exercice Sous-partie 2 - Choix B · Métropole 1 remplacement 2022
- Exercice Sous-partie 2 (choix B) - Algorithme de commande… · Métropole 2022 (sujet 2)
- Exercice Sous-partie 2 (choix B) - Programmes de contrôle… · Métropole 2 remplacement 2022
- Exercice Sous-partie 3 (Choix 2) - Traitement de l'informa… · Métropole Candidat libre 2021 (sujet 1)
- Exercice Sous-partie 1 - Algorithmique · Métropole 2021 (sujet 2)
- Exercice Sous-partie 3 - Questions 1.17, 1.19 et 1.20 · Métropole 2 remplacement 2021