Перейти к содержанию

Навигация

Serial Port: различия между версиями

1399 байт добавлено ,  2 года назад
Нет описания правки
(Отметить эту версию для перевода)
(не показано 20 промежуточных версий 4 участников)
Строка 2: Строка 2:
<translate>
<translate>


== Перед началом работы == <!--T:1-->
== Последовательные порты и их реализация в Linux == <!--T:1-->


<!--T:2-->
<!--T:2-->
Монументальное описание последовательных портов - http://www.tldp.org/HOWTO/Serial-HOWTO.html
Монументальное описание последовательных портов - http://www.tldp.org/HOWTO/Serial-HOWTO.html. Краткий неточный пересказ:
 
* в последовательный порт можно посылать данные и получать оттуда данные;
<!--T:3-->
* в Linux последовательные порты представлены в виде псевдофайлов из папки ''/dev/'', например, в Wiren Board это могут быть ''/dev/ttyAPP0'', ''/dev/ttyNSC1'', ''/dev/ttyUSB0'' (у всех в названии есть ''tty'').
Далее будет дано краткое неточное описание.
 
<!--T:4-->
В последовательный порт вы можете посылать данные, и получать их оттуда. В 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|Отключение порта]]


== Интерактивный HEX-терминал serial_tool == <!--T:6-->
== serial_tool - утилита для отправки и получения наборов бит == <!--T:6-->


<!--T:7-->
<!--T:7-->
Для интерактивной отправки и приёма данных в HEX (шестнадцатеричном) формате используйте утилиту [https://github.com/contactless/serial_tool serial_tool] (уже установлена в Wiren Board).
Чтобы отправлять и получать данные в шестнадцатеричном формате (то есть фактически побитово, группами по четыре бита), используйте утилиту [https://github.com/contactless/serial_tool serial_tool]. Она предустановлена на контроллерах Wiren Board.
 
=== Справка по использованию === <!--T:8-->


<!--T:9-->
<!--T:9-->
<pre>
<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


<!--T:10-->
serial_tool - interactive hex serial port console
serial_tool - interactive hex serial port console


<!--T:11-->
positional arguments:
positional arguments:
   port                  Serial port to open, i.e. /dev/ttyXXX
   port                  Serial port to open, i.e. /dev/ttyXXX


<!--T:12-->
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)
</pre>
</syntaxhighlight>


 
Пример использования:<!--T:13-->
=== Пример запуска === <!--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:15-->


<!--T:16-->
<!--T:16-->
Самая удобная утилита для работы с последовательным портом из консоли - '''minicom''' (есть в стандартном образе Wiren Board).
Самая удобная утилита для работы с последовательным портом из консоли - '''minicom''' (есть в стандартном образе Wiren Board).
Minicom удобно пользоваться для работы с устройстами, которые управляются текстовыми командами или выводят текстовые сообщения.  Примерами таких устройств являются GSM-модемы (управляются AT-командами), в том числе встроенный в Wiren Board GSM-модуль; GPS-модули, работающие по протоколу NMEA и т.п.
Minicom удобно пользоваться для работы с устройствами, которые управляются текстовыми командами или выводят текстовые сообщения.  Примерами таких устройств являются GSM-модемы (управляются AT-командами), в том числе встроенный в Wiren Board GSM-модуль; GPS-модули, работающие по протоколу NMEA и т.п.


<!--T:17-->
<!--T:17-->
Строка 92: Строка 96:
</pre>
</pre>
(все параметры будут сразу браться из профиля с названием ''/dev/ttyAPP0'', который мы ранее создали)
(все параметры будут сразу браться из профиля с названием ''/dev/ttyAPP0'', который мы ранее создали)
* Теперь можно вводить данные, которые вы хотите отправить в порт. Приходящие в порт данные от внешних устройств также будут выводиться
* Теперь можно вводить данные, которые вы хотите отправить в порт. Приходящие в порт данные от внешних устройств также будут выводиться.


<!--T:18-->
== modbus_client - утилита для работы с устройствами Modbus RTU и TCP == <!--T:19-->
----
 
 
== modbus-client == <!--T:19-->


<!--T:20-->
<!--T:20-->
Одним из самых удобных средств отладки коммуникаций Modbus из командной строки Wiren Board является утилита '''modbus-client'''.
Подробнее смотрите в статье [[Special:MyLanguage/modbus-client|modbus_client]].
Описание и примеры можно найти на этой странице [[Special:MyLanguage/modbus-client|modbus-client]].
 


== Работа с последовательным портом из своей программы == <!--T:21-->
== Работа с последовательным портом из своей программы == <!--T:21-->
wb_editors
885

правок