Шаг 98.
Python: сборник рецептов.
Файлы и ввод-вывод. Работа с последовательными портами

    На этом шаге мы приведем начальные сведения о пакете pySerial.

Задача

    Вы хотите читать и записывать данные в последовательный порт. Обычно это нужно для взаимодействия с каким-то устройством (например, роботом или сенсором).

Решение

    Хотя вы могли бы сделать это напрямую, используя примитивы ввода-вывода Python, лучшим выбором для последовательного взаимодействия является пакет pySerial.


https://pyserial.sourceforge.net/.

    Начать работать с пакетом очень легко. Вы просто открываете последовательный порт:

import serial

ser = serial.Serial('/dev/tty.usbmodem641', baudrate=9600, bytesize=8, parity='N', stopbits=1)

    Имя устройства меняется в зависимости от его типа и операционной системы. Например, в Windows вы можете использовать устройство 0, 1 и т. д., чтобы открыть такие порты, как "COM0" и "COM1". Когда они открыты, вы можете читать и записывать данные, используя вызовы read(), readline() и write(). Например:

ser.write(b'G1 X50 Y50\r\n')
resp = ser.readline()

    По большей части простой последовательный обмен данными весьма незамысловат.

Обсуждение

    Простая на первый взгляд, последовательная коммуникация все же может быть достаточно запутанной. Причина использовать пакеты типа pySerial в том, что они поддерживают продвинутые возможности (например, тайм-ауты, контроль потока, сбрасывание буфера, хендшейкинг и т. п.). Например, если вы хотите включить RTS-CTS-хендшейкинг, просто передайте Serial() аргумент rtscts=True. У пакета отличная документация, поэтому нет смысла ее здесь пересказывать.

    Помните, что весь ввод-вывод с использованием последовательных портов является бинарным. Поэтому убедитесь, что ваша программа использует байты, а не текст (или производит правильное кодирование/декодирование). Модуль struct может также оказаться полезным, если вам нужно будет создавать бинарные команды или пакеты.

    На следующем шаге мы рассмотрим сериализацию объектов Python.




Предыдущий шаг Содержание Следующий шаг