Question

Je veux envoyer des messages via le port série en utilisant pyserial. L'un des paramètres pour le constructeur de série est « bytesize ». J'ai essayé serial.SEVENBITS et serial.EIGHTBITS et n'ont pas remarqué une différence. La documentation est un peu vague et je suis nouvelle à la fois la communication et Python série. Est-ce que la valeur réglée maximum un octet peut contenir ou est-ce quelque chose à voir avec les octets signés? Quelqu'un peut-il éclaircir la raison pour laquelle j'utiliser 7 bits sur 8? J'ai cherché, mais ne l'ai pas trouvé une réponse.

Merci

Était-ce utile?

La solution

désigne le nombre de bits de données dans chaque caractère transmis. De wikipedia :

  

bits de données

     

Le nombre de bits de données dans chaque   caractère peut être 5 (pour le code Baudot),   6 (rarement utilisé), 7 (pour vrai ASCII), 8   (Pour tout type de données, ce matchs   la taille d'un octet), ou 9 (rarement   utilisé). 8 bits de données sont presque   universellement utilisé dans les nouveaux   applications. 5 ou 7 bits généralement   n'a de sens avec un équipement plus   tel que téléscripteurs.

     

La plupart des communications série dessins   envoyer les bits de données dans chaque octet   Bit de poids faible (moins Significant Bit) en premier.   Cette norme est également appelée   "petit endian". De plus possible, mais   rarement utilisé, est « big endian » ou MSB   (Bit le plus significatif) la première série   communications. (Voir Endianness pour   plus sur commande bits.) L'ordre de   les bits est généralement pas configurable, mais   les données peuvent être octets permutés seulement avant   l'envoi.

Autres conseils

Par le passé, il était courant d'envoyer uniquement le texte ASCII via une connexion série qui se classent parmi sept bits, et un huitième bit sera utilisé comme marqueur de parité qui pourrait indiquer si les données ont été transmises correctement.

Étant donné que le contrôle de parité ne se coince pas d'erreurs sur un nombre pair de bits, et ne peut pas corriger les données du tout, ce n'est pas valable, et la pratique moderne est d'utiliser les données 8 bits et faire la détection et la correction des erreurs à une couche supérieure de protocole.

Réponse courte vous est probablement envie 8 bits, mais cela dépend de ce que l'autre extrémité de la connexion série attend.

Mise à jour: De l'autre question, il semble que vous programmez les deux extrémités de la connexion, et la somme de contrôle de vos messages, il est certainement plus facile à utiliser 8 bits.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top