'Bytesize' dans le module pyserial
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
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.