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

Материал из Wiren Board
(Новая страница: «== Interactive HEX-terminal serial_tool ==»)
(Новая страница: «For interactive sending and receiving of data in HEX (hexadecimal) format, use the [https://github.com/contactless/serial_tool serial_tool] utility (already ins…»)
Строка 18: Строка 18:
== Interactive HEX-terminal serial_tool ==
== Interactive HEX-terminal serial_tool ==


Для интерактивной отправки и приёма данных в HEX (шестнадцатеричном) формате используйте утилиту [https://github.com/contactless/serial_tool serial_tool] (уже установлена в Wiren Board).
For interactive sending and receiving of data in HEX (hexadecimal) format, use the  [https://github.com/contactless/serial_tool serial_tool] utility (already installed on the Wiren Board).


=== Справка по использованию ===
=== Справка по использованию ===

Версия 20:17, 29 мая 2019

Другие языки:

Before you start

A monumental description of the serial ports - http://www.tldp.org/HOWTO/Serial-HOWTO.html


The following is a brief, inaccurate description.

You can send data to the serial port and receive it from there. In Linux, serial ports are represented as some pseudo-files from the /dev/ folder, for example, in the Wiren Board it is /dev/ttyAPP0, /dev/ttyNSC1, /dev/ttyUSB0 (all have tty in the name).

Before you start working with the port, you need to adjust its speed and other parameters depending on what device is connected to it:

  • speed in bits per second. The most popular value is 115200
  • number of bits in the symbol, parity, number of stop bits. The most popular configuration is called 8N1 - eight bits per character, no parity, one stop bit
  • hardware and software flow control. If you do not know it - put no in both cases.


Interactive HEX-terminal serial_tool

For interactive sending and receiving of data in HEX (hexadecimal) format, use the serial_tool utility (already installed on the Wiren Board).

Справка по использованию

root@wirenboard:~# 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)


Пример запуска

root@wirenboard:~# serial_tool -b 9600 -p N -d 8 -s 2 -t 1 /dev/ttyNSC1 
serial_tool on /dev/ttyNSC1: 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

Здесь установлены настройки 9600 8N2, таймаут 1 секунда, порт /dev/ttyNSC1 (RS-485).


Интерактивный режим работы из консоли

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

Краткая инструкция (считаем, что мы будем работать с портом /dev/ttyAPP0):

  • В первый раз запускаем minicom с ключом, создающим профиль работы с портом (в нём хранятся номер порта, скорость передачи данных, чётность, и т.д.):
 $ minicom -s /dev/ttyAPP0
  • Зайти в настройки (нажать Ctrl+A, затем O), выбрать пункт Serial port setup, там установить порт /dev/ttyAPP0, скорость и чётность - 115200, 8N1, Hardware flow control - No, Software flow control - No
  • Сохранить настройки: Save setup as _dev_ttyAPP0
  • Далее запускать как:
 $ minicom /dev/ttyAPP0

(все параметры будут сразу браться из профиля с названием /dev/ttyAPP0, который мы ранее создали)

  • Теперь можно вводить данные, которые вы хотите отправить в порт. Приходящие в порт данные от внешних устройств также будут выводиться


modbus-client

Одним из самых удобных средств отладки коммуникаций Modbus из командной строки Wiren Board является утилита modbus-client. Описание и примеры можно найти на этой странице modbus-client.


Работа с последовательным портом из своей программы

http://tldp.org/HOWTO/Serial-Programming-HOWTO/