wb_editors
885
правок
(Отметить эту версию для перевода) |
Brainroot (обсуждение | вклад) |
||
(не показано 20 промежуточных версий 4 участников) | |||
Строка 2: | Строка 2: | ||
<translate> | <translate> | ||
== | == Последовательные порты и их реализация в Linux == <!--T:1--> | ||
<!--T:2--> | <!--T:2--> | ||
Монументальное описание последовательных портов - http://www.tldp.org/HOWTO/Serial-HOWTO.html | Монументальное описание последовательных портов - http://www.tldp.org/HOWTO/Serial-HOWTO.html. Краткий неточный пересказ: | ||
* в последовательный порт можно посылать данные и получать оттуда данные; | |||
* в Linux последовательные порты представлены в виде псевдофайлов из папки ''/dev/'', например, в Wiren Board это могут быть ''/dev/ttyAPP0'', ''/dev/ttyNSC1'', ''/dev/ttyUSB0'' (у всех в названии есть ''tty''). | |||
<!--T:5--> | <!--T:5--> | ||
Перед тем, как начать работать с портом, надо настроить его скорость и другие параметры в зависимости от того, какое устройство к нему подключено: | Перед тем, как начать работать с портом, надо настроить его скорость и другие параметры в зависимости от того, какое устройство к нему подключено: | ||
* скорость в битах в секунду. Самое популярное значение 115200 | * скорость в битах в секунду. Самое популярное значение 115200; | ||
* количество бит в символе, чётность, количество стоп-битов. Самая популярная конфигурация называется ''8N1'' - восемь бит в символе, проверки чётности нет, один стоп-бит | * количество бит в символе, чётность, количество стоп-битов. Самая популярная конфигурация называется ''8N1'' - восемь бит в символе, проверки чётности нет, один стоп-бит; | ||
* аппаратный и программный контроль потока. Если не знаете | * аппаратный и программный контроль потока. Если не знаете, поставьте "нет" в обоих настройках. | ||
== Определение занят ли порт и монопольное использование == <!--T:6--> | |||
Работать с последовательным портом может (обычно) только один процесс. | |||
Если порт "занят" - то попытка передать/получить через него обычно неудачна. | |||
Для того чтобы определить кто занял порт, можно использовать fuser | |||
Запустим с именем интересующего нас файла (устройства): | |||
fuser /dev/ttyRS485-2 | |||
Если вывод пуст - порт свободен. Если нет - то будет показан занявший процесс. | |||
Порты /dev/ttyRS485-1 и /dev/ttyRS485-2 (если есть сконфигурированные на них устройства) обычно заняты сервисом wb-mqtt-serial | |||
Чтобы его остановить на время работы с портом нужно выполнить: | |||
systemctl stop wb-mqtt-serial | |||
Для запуска: | |||
systemctl start wb-mqtt-serial | |||
Либо отключить порт в конфигурации wb-mqtt-serial сняв галочку "Enable port" (Не забудьте сохранить кнопкой "Save" вверху). | |||
[[Файл:Enable-disable serial port.png|200px|thumb|right|Отключение порта]] | |||
== | == serial_tool - утилита для отправки и получения наборов бит == <!--T:6--> | ||
<!--T:7--> | <!--T:7--> | ||
Чтобы отправлять и получать данные в шестнадцатеричном формате (то есть фактически побитово, группами по четыре бита), используйте утилиту [https://github.com/contactless/serial_tool serial_tool]. Она предустановлена на контроллерах Wiren Board. | |||
<!--T:9--> | <!--T:9--> | ||
< | <syntaxhighlight lang="bash"> | ||
root@wirenboard:~# serial_tool -h | root@wirenboard:~# serial_tool -h | ||
usage: serial_tool [-h] [-b BAUD] [-p PARITY] [-d DATA_BITS] [-s STOP_BITS] | usage: serial_tool [-h] [-b BAUD] [-p PARITY] [-d DATA_BITS] [-s STOP_BITS] | ||
Строка 34: | Строка 43: | ||
port | port | ||
serial_tool - interactive hex serial port console | serial_tool - interactive hex serial port console | ||
positional arguments: | positional arguments: | ||
port Serial port to open, i.e. /dev/ttyXXX | port Serial port to open, i.e. /dev/ttyXXX | ||
optional arguments: | optional arguments: | ||
-h, --help show this help message and exit | -h, --help show this help message and exit | ||
Строка 54: | Строка 60: | ||
-t READ_TIMEOUT, --timeout READ_TIMEOUT | -t READ_TIMEOUT, --timeout READ_TIMEOUT | ||
number of seconds to wait for answer (default: 1) | number of seconds to wait for answer (default: 1) | ||
</ | </syntaxhighlight> | ||
Пример использования:<!--T:13--> | |||
<!--T:14--> | <!--T:14--> | ||
Строка 72: | Строка 77: | ||
Здесь установлены настройки 9600 8N2, таймаут 1 секунда, порт /dev/ttyNSC1 (RS-485). | Здесь установлены настройки 9600 8N2, таймаут 1 секунда, порт /dev/ttyNSC1 (RS-485). | ||
== minicom - утилита для отправки и получения символьных команд == <!--T:15--> | |||
== | |||
<!--T:16--> | <!--T:16--> | ||
Самая удобная утилита для работы с последовательным портом из консоли - '''minicom''' (есть в стандартном образе Wiren Board). | Самая удобная утилита для работы с последовательным портом из консоли - '''minicom''' (есть в стандартном образе Wiren Board). | ||
Minicom удобно пользоваться для работы с | Minicom удобно пользоваться для работы с устройствами, которые управляются текстовыми командами или выводят текстовые сообщения. Примерами таких устройств являются GSM-модемы (управляются AT-командами), в том числе встроенный в Wiren Board GSM-модуль; GPS-модули, работающие по протоколу NMEA и т.п. | ||
<!--T:17--> | <!--T:17--> | ||
Строка 92: | Строка 96: | ||
</pre> | </pre> | ||
(все параметры будут сразу браться из профиля с названием ''/dev/ttyAPP0'', который мы ранее создали) | (все параметры будут сразу браться из профиля с названием ''/dev/ttyAPP0'', который мы ранее создали) | ||
* Теперь можно вводить данные, которые вы хотите отправить в порт. Приходящие в порт данные от внешних устройств также будут выводиться | * Теперь можно вводить данные, которые вы хотите отправить в порт. Приходящие в порт данные от внешних устройств также будут выводиться. | ||
== modbus_client - утилита для работы с устройствами Modbus RTU и TCP == <!--T:19--> | |||
== | |||
<!--T:20--> | <!--T:20--> | ||
Подробнее смотрите в статье [[Special:MyLanguage/modbus-client|modbus_client]]. | |||
== Работа с последовательным портом из своей программы == <!--T:21--> | == Работа с последовательным портом из своей программы == <!--T:21--> |