Работа с последовательным портом (serial-портом)

Материал из Wiren Board
Версия от 10:33, 26 августа 2021; A.Degtyarev (обсуждение | вклад) (→‎Minicom: Вынес про миником в отдельную статью, а тут оставил только ссылку)

Linux

Реализация serial-портов

Полное описание читайте в документации, вот выжимка из неё:

  • В serial-порт можно посылать данные и получать данные из него.
  • В ОС Linux serial-порты — это псевдофайлы из папки /dev. Например, в контроллерах Wiren Board это могут быть /dev/ttyGSM, /dev/ttyRS485-1, /dev/ttyUSB0 — у всех в названии есть tty.

Перед началом работы с serial-портом, настройте его скорость и параметры так же как настроено подключённое к нему устройство:

  • Скорость в битах в секунду, самое популярное — 115200 бит/с.
  • Количество бит в символе, чётность и количество стоп-битов. Популярна конфигурация 8N1 — восемь бит в символе, без проверки чётности, один стоп-бит.
  • Аппаратный и программный контроль потока — если не уверены, то поставьте «Нет» в обоих параметрах.

Определение занятости порта и монопольное использование

Отключение serial-порта в веб-интерфейсе контроллера Wiren Board

Обычно, работать с serial-портом может только один процесс. Если порт «занят», то попытка передать или получить через него данные не удастся.

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

Проверим, свободен ли порт /dev/ttyRS485-2. Для этого выполните команду:

fuser /dev/ttyRS485-1

Если вывод пуст — порт свободен. Иначе будет выведен процесс, который занимает порт.

В контроллерах Wiren Board порты /dev/ttyRS485-1 и /dev/ttyRS485-2 обычно заняты драйвером wb-mqtt-serial. Перед работой с этими портами — остановите драйвер одним из способов:

Serial_tool

Пример работы с утилитой serial_tool

Serial_tool — утилита для отправки и получения наборов бит. Используйте её для отправки и получения данных в шестнадцатеричном формате: побитово, группами по четыре бита.

Утилита serial_tool предустановлена на все контроллеры Wiren Board. На компьютеры с Linux её нужно установить из нашего репозитория.

Для вызова справки по утилите, запустите утилиту с параметром -h:

~# serial_tool -h
usage: serial_tool [-h] [-b BAUD] [-p PARITY] [-d DATA_BITS] [-s STOP_BITS]
                   [-t READ_TIMEOUT]
                   port

serial_tool - interactive hex serial port console

positional arguments:
  port                  Serial port to open, i.e. /dev/ttyXXX

optional arguments:
  -h, --help            show this help message and exit
  -b BAUD, --baud BAUD  Baud rate (default: 9600)
  -p PARITY, --parity PARITY
                        set parity, one of [N, E, O, M, S] (default: N)
  -d DATA_BITS, --data-bits DATA_BITS
                        set number of data bits, i.e. bytesize (default: 8)
  -s STOP_BITS, --stop-bits STOP_BITS
                        set number of stop bits, one of [1, 1.5, 2] (default:
                        1)
  -t READ_TIMEOUT, --timeout READ_TIMEOUT
                        number of seconds to wait for answer (default: 1)

Например, запишем последовательность бит в порт /dev/ttyRS485-1 с параметрами порта 8N2 и таймаутом в одну секунду:

~# serial_tool -b 9600 -p N -d 8 -s 2 -t 1 /dev/ttyRS485-1 
serial_tool on /dev/ttyRS485-1: 9600 8N2.0
Enter your commands below in HEX form. 
All characters but 0-9,a-f including spaces are ignored.
Press Control-D or Control-C to leave the application.
Press [Enter] to print received data
>> FF FF 0A 01 11 00 00 1C
<< FF FF 0A 00 11 00 00 1B

Другие примеры использования утилиты можно посмотреть в статьях о настройке приводов штор, например, Akko AM82.

Об использовании Minicom для подключения к serial-порту читайте в статье Minicom.

PuTTY

Об использовании PuTTY для подключения к serial-порту читайте в статье PuTTY.

Протокол Modbus RTU

Если serial-устройство поддерживает протокол Modbus RTU, то вы можете работать с ним с помощью утилиты modbus_client.

Собственное ПО

Если вы пишете скрипт или свою программу для работы с serial-портом, то руководствуйтесь советами из Serial-Programming-HOWTO.

Windows

Для подключения к serial-порту в ОС Windows используйте PuTTY.

macOS

В macOS используйте:

  • PuTTY for Mac OS X
  • терминальный клиент cu:
    cu -s 115200 -l /dev/usbmodem00001
    

Android

На устройствах с Android можете использовать USB Serial Console и другие аналогичные программы.

Прочие программы

Если по каким-то причинам вы не можете использовать программы из этой статьи — посмотрите этот список программ.