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

Материал из Wiren Board
 
(не показано 8 промежуточных версий этого же участника)
Строка 1: Строка 1:
{{DISPLAYTITLE: Работа с последовательным портом (serial-портом)}}
{{DISPLAYTITLE: Работа с последовательным портом (serial-портом)}}
== Linux ==
== Serial-порты в контроллере Wiren Board ==
=== Реализация serial-портов ===
=== Реализация ===
Полное описание читайте в [http://www.tldp.org/HOWTO/Serial-HOWTO.html документации], вот выжимка из неё:
Полное описание читайте в [http://www.tldp.org/HOWTO/Serial-HOWTO.html документации], вот выжимка из неё:
* В serial-порт можно посылать данные и получать данные из него.
* В serial-порт можно посылать данные и получать данные из него.
Строка 7: Строка 7:


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


=== Определение занятости порта и монопольное использование ===
=== Определение занятости порта и монопольное использование ===
[[Image: Enable-disable serial port.png |500px|thumb|right| Отключение serial-порта в веб-интерфейсе контроллера Wiren Board ]]
[[Image: Enable-disable serial port.png |300px|thumb|right| Отключение serial-порта в веб-интерфейсе контроллера Wiren Board ]]
 
Обычно, работать с serial-портом может только один процесс. Если порт «занят», то попытка передать или получить через него данные не удастся.
Обычно, работать с serial-портом может только один процесс. Если порт «занят», то попытка передать или получить через него данные не удастся.


Строка 19: Строка 18:


Проверим, свободен ли порт <code> /dev/ttyRS485-2</code>. Для этого выполните команду:
Проверим, свободен ли порт <code> /dev/ttyRS485-2</code>. Для этого выполните команду:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="console">
fuser /dev/ttyRS485-1
# fuser -v /dev/ttyRS485-1
                    USER        PID ACCESS COMMAND
/dev/ttyS2:          root      32296 F.... wb-mqtt-serial
</syntaxhighlight>
</syntaxhighlight>
Если вывод пуст — порт свободен. Иначе будет выведен процесс, который занимает порт.
Если вывод пуст — порт свободен. Иначе будет выведен процесс, который занимает порт. В примере выше порт занят драйвером wb-mqtt-serial.


В контроллерах 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-порта снять галочку «Enable port» и сохранить настройки.
* [[RS-485:Configuration via Web Interface | В веб-интерфейсе контроллера]], в настройках serial-порта снять галочку '''Enable port''' и сохранить настройки.


=== Serial_tool ===
== Программы для работы с serial-портом ==
Об использовании Serial_tool для подключения к serial-порту читайте в [[Serial_tool | статье Serial_tool]].
Программы для разных ОС:
 
* Linux: [[Serial_tool | Serial_tool]], [[Minicom | Minicom]], [[PuTTY | PuTTY]].
=== Minicom ===
* Windows: [[PuTTY | PuTTY]].
 
* macOS: [https://www.ssh.com/ssh/putty/mac/ PuTTY for Mac OS X] или терминальный клиент <code>cu</code>: <code>cu -s 115200 -l /dev/usbmodem00001</code>
Об использовании Minicom для подключения к serial-порту читайте в [[Minicom | статье Minicom]].
* Android: [https://play.google.com/store/apps/details?id=jp.sugnakys.usbserialconsole&hl=en_US USB Serial Console] и другие аналогичные программы.
 
=== 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 этот список].
* Если serial-устройство поддерживает протокол Modbus RTU, то вы можете работать с ним с помощью утилиты [[modbus_client]].
* Вы пишете скрипт или свою программу для работы с serial-портом — руководствуйтесь советами из [https://tldp.org/HOWTO/Serial-Programming-HOWTO/ Serial-Programming-HOWTO].


== Прочие программы ==
<gallery mode="traditional" widths="250px"  caption="Примеры работы с serial-портом в различных программах">
Если по каким-то причинам вы не можете использовать программы из этой статьи — посмотрите [http://elinux.org/RPi_Serial_Connection этот список программ].
Image: Akko setting address.png |Отправка команд через [[serial_tool]]
Image: Minicom-AT-4G.png | Отправка AT-команд в программе [[minicom]]
Image: Putty serial logged in.png | Работа с Debug-консолью в [[PuTTY]]
</gallery>

Текущая версия на 08:30, 13 апреля 2023

Serial-порты в контроллере Wiren Board

Реализация

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

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

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

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

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

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

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

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

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

# fuser -v /dev/ttyRS485-1
                     USER        PID ACCESS COMMAND
/dev/ttyS2:          root      32296 F.... wb-mqtt-serial

Если вывод пуст — порт свободен. Иначе будет выведен процесс, который занимает порт. В примере выше порт занят драйвером wb-mqtt-serial.

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

Программы для работы с serial-портом

Программы для разных ОС:

Дополнительно:

  • Если вы не можете использовать программы из этой статьи — посмотрите этот список.
  • Если serial-устройство поддерживает протокол Modbus RTU, то вы можете работать с ним с помощью утилиты modbus_client.
  • Вы пишете скрипт или свою программу для работы с serial-портом — руководствуйтесь советами из Serial-Programming-HOWTO.