Transmission série

Communication série RS232

Le protocole RS232 est un protocole de communication série très largement répandu.

Il prévoie l’envoi des données octet par octet par trames simples comportant, selon la configuration choisie :

  • 1 bit de start
  • 7 à 8 bit de données (le bit de poids faible transmis en premier)
  • 1 bit de parité optionnel
  • 1 à 2 bits de stop.

Le bit de parité (optionnel) sert à détecter les erreurs éventuelles de transmission. Il existe deux types de parité.

  • parité paire : le bit ajouté à la donnée est positionné de telle façon que le nombre des états 1 soit pair sur l’ensemble {données + bit de parité}.

ex : soit la donnée 11001011 contenant 5 états 1, le bit de parité paire est positionné à 1, ramenant ainsi le nombre de 1 à 6 (pair).

  • parité impaire : le bit ajouté à la donnée est positionné de telle façon que le nombre des états 1 soit impair sur l’ensemble {données + bit de parité}.

ex : soit la donnée 11001011 contenant 5 états 1, le bit de parité impaire est positionné à 0, laissant ainsi un nombre de 1 impair.

Activité Python

Écrire une fonction parite()  qui attend deux arguments, un nombre entier (au format octet) et un booléen spécifiant la parité, et qui renvoie la valeur du bit de parité.

Écrire une fonction trame()  qui renvoie la trame (une liste de bits) correspondant à l’octet à transmettre, étant donnés :

  • un nombre entier (format octet)
  • un entier (7 ou 8) spécifiant la taille de la donnée à transmettre
  • un booléen spécifiant la parité
  • un entier spécifiant le nombre de bits de stop.

 

[reveal_link heading= »%image%  Correction » id= »id1″]

[reveal heading= »noheading » id= »id1″]
def parite(octet, paire):
   bits = list(bin(octet)[2:])
   while len(bits) < 8:
      bits.insert(0,"0")
   bits = [eval(b) for b in bits]
   c = 0
   for b in bits:
      c += b
   if paire:
      return c%2
   else:
      return 1 - c%2
[/reveal]

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *