Serial Port: различия между версиями
(→Minicom: Вынес про миником в отдельную статью, а тут оставил только ссылку) |
|||
(не показано 10 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Работа с последовательным портом (serial-портом)}} | {{DISPLAYTITLE: Работа с последовательным портом (serial-портом)}} | ||
== | == Linux == | ||
=== Реализация === | === Реализация serial-портов === | ||
Полное описание читайте в [http://www.tldp.org/HOWTO/Serial-HOWTO.html документации], вот выжимка из неё: | Полное описание читайте в [http://www.tldp.org/HOWTO/Serial-HOWTO.html документации], вот выжимка из неё: | ||
* В serial-порт можно посылать данные и получать данные из него. | * В serial-порт можно посылать данные и получать данные из него. | ||
Строка 7: | Строка 7: | ||
Перед началом работы с serial-портом, настройте его скорость и параметры так же как настроено подключённое к нему устройство: | Перед началом работы с serial-портом, настройте его скорость и параметры так же как настроено подключённое к нему устройство: | ||
* Скорость в битах в секунду, самое популярное — | * Скорость в битах в секунду, самое популярное — 115200 бит/с. | ||
* Количество бит в символе, чётность и количество стоп-битов. Популярна конфигурация 8N1 — восемь бит в символе, без проверки чётности, один стоп-бит. | * Количество бит в символе, чётность и количество стоп-битов. Популярна конфигурация 8N1 — восемь бит в символе, без проверки чётности, один стоп-бит. | ||
* Аппаратный и программный контроль потока — если не уверены, то поставьте «Нет» в обоих параметрах. | * Аппаратный и программный контроль потока — если не уверены, то поставьте «Нет» в обоих параметрах. | ||
=== Определение занятости порта и монопольное использование === | === Определение занятости порта и монопольное использование === | ||
[[Image: Enable-disable serial port.png | | [[Image: Enable-disable serial port.png |500px|thumb|right| Отключение serial-порта в веб-интерфейсе контроллера Wiren Board ]] | ||
Обычно, работать с serial-портом может только один процесс. Если порт «занят», то попытка передать или получить через него данные не удастся. | Обычно, работать с serial-портом может только один процесс. Если порт «занят», то попытка передать или получить через него данные не удастся. | ||
Строка 18: | Строка 19: | ||
Проверим, свободен ли порт <code> /dev/ttyRS485-2</code>. Для этого выполните команду: | Проверим, свободен ли порт <code> /dev/ttyRS485-2</code>. Для этого выполните команду: | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="bash"> | ||
fuser /dev/ttyRS485-1 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Если вывод пуст — порт свободен. Иначе будет выведен процесс, который занимает порт | Если вывод пуст — порт свободен. Иначе будет выведен процесс, который занимает порт. | ||
В контроллерах Wiren Board порты <code>/dev/ttyRS485-1</code> и <code>/dev/ttyRS485-2</code> обычно заняты драйвером <code>wb-mqtt-serial</code>. Перед работой с этими портами — остановите драйвер одним из способов: | В контроллерах Wiren Board порты <code>/dev/ttyRS485-1</code> и <code>/dev/ttyRS485-2</code> обычно заняты драйвером <code>wb-mqtt-serial</code>. Перед работой с этими портами — остановите драйвер одним из способов: | ||
* [[wb-mqtt-serial#Управление драйвером | Остановить драйвер]] из командной строки. | * [[wb-mqtt-serial#Управление драйвером | Остановить драйвер]] из командной строки. | ||
* [[RS-485:Configuration via Web Interface | В веб-интерфейсе контроллера]], в настройках serial-порта снять галочку | * [[RS-485:Configuration via Web Interface | В веб-интерфейсе контроллера]], в настройках serial-порта снять галочку «Enable port» и сохранить настройки. | ||
=== Serial_tool === | |||
[[Image: Akko setting address.png |500px|thumb|right| Пример работы с утилитой serial_tool ]] | |||
Serial_tool — утилита для отправки и получения наборов бит. Используйте её для отправки и получения данных в шестнадцатеричном формате: побитово, группами по четыре бита. | |||
Утилита serial_tool предустановлена на все контроллеры Wiren Board. На компьютеры с Linux её нужно установить из [https://github.com/wirenboard/serial_tool нашего репозитория]. | |||
Для вызова справки по утилите, запустите утилиту с параметром <code>-h</code>: | |||
<syntaxhighlight lang="bash"> | |||
~# 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) | |||
</syntaxhighlight> | |||
Например, запишем последовательность бит в порт /dev/ttyRS485-1 с параметрами порта 8N2 и таймаутом в одну секунду: | |||
<syntaxhighlight lang="bash"> | |||
~# 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 | |||
</syntaxhighlight> | |||
Другие примеры использования утилиты можно посмотреть в статьях о настройке приводов штор, например, [[Akko AM82]]. | |||
Об использовании Minicom для подключения к serial-порту читайте в [[Minicom | статье Minicom]]. | |||
=== PuTTY === | |||
Об использовании PuTTY для подключения к serial-порту читайте в [[PuTTY | статье PuTTY]]. | |||
=== Протокол Modbus RTU === | |||
Если serial-устройство поддерживает протокол Modbus RTU, то вы можете работать с ним с помощью утилиты [[modbus_client]]. | |||
=== Собственное ПО === | |||
Если вы пишете скрипт или свою программу для работы с serial-портом, то руководствуйтесь советами из [https://tldp.org/HOWTO/Serial-Programming-HOWTO/ Serial-Programming-HOWTO]. | |||
== Windows == | |||
Для подключения к serial-порту в ОС Windows используйте [[PuTTY | PuTTY]]. | |||
== macOS == | |||
В macOS используйте: | |||
* [https://www.ssh.com/ssh/putty/mac/ PuTTY for Mac OS X] | |||
* терминальный клиент <code>cu</code>: | |||
*: <syntaxhighlight lang="bash"> | |||
cu -s 115200 -l /dev/usbmodem00001 | |||
</syntaxhighlight> | |||
== Android == | |||
На устройствах с Android можете использовать [https://play.google.com/store/apps/details?id=jp.sugnakys.usbserialconsole&hl=en_US USB Serial Console] и другие аналогичные программы. | |||
== Прочие программы == | |||
Если по каким-то причинам вы не можете использовать программы из этой статьи — посмотрите [http://elinux.org/RPi_Serial_Connection этот список программ]. | |||
Версия 10:33, 26 августа 2021
Linux
Реализация serial-портов
Полное описание читайте в документации, вот выжимка из неё:
- В serial-порт можно посылать данные и получать данные из него.
- В ОС Linux serial-порты — это псевдофайлы из папки
/dev
. Например, в контроллерах Wiren Board это могут быть/dev/ttyGSM
,/dev/ttyRS485-1
,/dev/ttyUSB0
— у всех в названии естьtty
.
Перед началом работы с serial-портом, настройте его скорость и параметры так же как настроено подключённое к нему устройство:
- Скорость в битах в секунду, самое популярное — 115200 бит/с.
- Количество бит в символе, чётность и количество стоп-битов. Популярна конфигурация 8N1 — восемь бит в символе, без проверки чётности, один стоп-бит.
- Аппаратный и программный контроль потока — если не уверены, то поставьте «Нет» в обоих параметрах.
Определение занятости порта и монопольное использование
Обычно, работать с serial-портом может только один процесс. Если порт «занят», то попытка передать или получить через него данные не удастся.
Используйте команду fuser для того, чтобы определить, свободен ли порт. В качестве параметра передайте порт, который нужно проверить.
Проверим, свободен ли порт /dev/ttyRS485-2
. Для этого выполните команду:
fuser /dev/ttyRS485-1
Если вывод пуст — порт свободен. Иначе будет выведен процесс, который занимает порт.
В контроллерах Wiren Board порты /dev/ttyRS485-1
и /dev/ttyRS485-2
обычно заняты драйвером wb-mqtt-serial
. Перед работой с этими портами — остановите драйвер одним из способов:
- Остановить драйвер из командной строки.
- В веб-интерфейсе контроллера, в настройках serial-порта снять галочку «Enable port» и сохранить настройки.
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 и другие аналогичные программы.
Прочие программы
Если по каким-то причинам вы не можете использовать программы из этой статьи — посмотрите этот список программ.