'bytesize' в модуле PySerial - PullRequest
       38

'bytesize' в модуле PySerial

1 голос
/ 01 декабря 2010

Я хочу отправлять сообщения через последовательный порт, используя PySerial. Одним из параметров для последовательного конструктора является «bytesize». Я пробовал serial.SEVENBITS и serial.EIGHTBITS и не заметил разницы. Документация немного расплывчата, и я новичок как в Python, так и в последовательной связи. Это просто устанавливает максимальное значение, которое может содержать байт, или это как-то связано со знаковыми байтами? Может кто-нибудь выяснить, почему я использовал 7 битов над 8? Я искал, но не нашел ответа.

Спасибо

Ответы [ 2 ]

3 голосов
/ 01 декабря 2010

Исторически сложилось так, что отправлять текст ASCII только через последовательное соединение, которое умещается в семь битов, и восьмой бит будет использоваться в качестве маркера четности, который может указывать, правильно ли передаются данные.

Поскольку проверка четности не фиксирует ошибки на четном количестве бит и не может исправить данные вообще, это не так уж и полезно, и современная практика заключается в использовании 8-битных данных и выполнении ошибокобнаружение и исправление на более высоком уровне протокола.

Короткий ответ: вы, вероятно, хотите 8-битный, но это зависит от того, что ожидает другой конец последовательного соединения.

Обновление: сВаш другой вопрос звучит так, как будто вы программируете оба конца соединения и проверяете сумму своих сообщений, так что однозначно использовать 8-битный код определенно проще.

1 голос
/ 01 декабря 2010

Это относится к числу битов данных в каждом передаваемом символе.Из Википедии :

Биты данных

Количество бит данных в каждом символе может быть 5 (для кода Бодо), 6 (редко используется), 7(для истинного ASCII), 8 (для любого типа данных, так как это соответствует размеру байта), или 9 (редко используется).8 бит данных почти повсеместно используются в новых приложениях.5 или 7 бит, как правило, имеют смысл только с более старым оборудованием, таким как телепринтеры.

Большинство проектов последовательной связи сначала отправляют биты данных в пределах каждого байта LSB (младший значащий бит).Этот стандарт также называют «прямым порядком байтов».Также возможна, но редко используется, первая последовательная связь "старшего разряда" или MSB (старший бит).(См. Endianness для получения дополнительной информации о порядке следования битов.) Порядок битов обычно не конфигурируется, но данные могут быть заменены байтами только перед отправкой.

...