UART
UART-устройства кодируются в байт и зависят от платформы. По этой причине модуль UART определяет числовую константу для каждого доступного UART-устройства. Например, на ESP32 UART1 определяется константой uart.UART1. Пожалуйста, обратитесь к документации вашей платформы или платы, чтобы узнать, какие UART-устройства доступны. Если вы обращаетесь к несуществующему UART, возвращается значение nil.
Функции UART не являются потокобезопасными. Вы должны использовать функции блокировки и разблокировки, чтобы сделать функции UART потокобезопасными.
uart.pins([table])
Перечислить пины, назначенные портам UART. Начальные назначения определены в Kconfig в разделе Component config -> Lua RTOS -> Hardware -> UART pin map. Перед использованием любой функции модуля UART вы можете изменить назначенные пины с помощью функции uart.setpins.
Аргументы:
- table: если true, список пинов возвращается в таблице Lua, если false — список пинов выводится в консоль.
Возвращает:
-
если table равно false: ничего или исключение.
-
если table равно true: таблицу Lua со списком пинов или исключение. Эта таблица представляет собой массив таблиц. Каждая запись соответствует порту UART. Каждый порт предоставляет следующие поля:
- id: идентификатор порта UART.
- rx: номер GPIO, назначенный сигналу приема (rx).
- tx: номер GPIO, назначенный сигналу передачи (tx).
/ > uart.pins()
UART0: rx=GPIO3 tx=GPIO1
UART1: rx=GPIO26 tx=GPIO25
UART2: rx=GPIO2 tx=GPIO15
uart.setpins(id, rx, tx)
Устанавливает пины, назначенные порту UART. Используйте эту функцию, если вам нужно изменить начальные назначения.
Аргументы:
- id: идентификатор устройства UART. Используйте любую константу uart.UARTx для этой цели.
- rx: номер GPIO, назначенный сигналу приема (rx). Используйте любую константу pio.GPIOxx для этого.
- tx: номер GPIO, назначенный сигналу передачи (tx). Используйте любую константу pio.GPIOxx для этого.
uart = uart.attach(id, baud rate, data bits, parity, stop bits, [buffer size, flags])
Подключить устройство UART к модулю UART.
Аргументы:
- id: идентификатор устройства UART. Используйте uart.UARTx, определенный для этой цели.
- baud rate (скорость передачи): желаемая скорость передачи, выраженная в бодах.
- data bits (биты данных): количество бит данных, может быть 8 или 9.
- parity (паритет): паритет, может быть uart.PARNONE (без паритета), uart.PAREVEN (четный паритет) или uart.PARODD (нечетный паритет).
- stop bits (стоп-биты): количество стоп-битов, может быть uart.STOP1 (1 стоп-бит) или uart.STOP2 (2 стоп-бита).
- buffer size (размер буфера, необязательно): размер буфера приема UART, выраженный в байтах. Если вы не указываете значение, используется буфер на 1024 байта.
- flags (флаги, необязательно): битовая маска, составленная из следующих констант:
- uart.READ: подключить устройство UART только для чтения (используется только RX).
- uart.WRITE: подключить устройство UART только для записи (используется только TX).
- значение по умолчанию uart.READ | uart.WRITE: подключить устройство UART для чтения/записи (используются RX и TX).
Возвращает: реальную установленную скорость передачи на устройстве UART или исключение. Это значение может отличаться от желаемой скорости передачи.
-- Attach an UART device to UART2, 115200 bps, 8N1
uart.attach(uart.UART2, 115200, 8, uart.PARNONE, uart.STOP1)
uart.lock(id)
Блокировать UART вызывающим потоком.
- id: идентификатор устройства UART. Используйте uart.UARTx, определенный для этой цели.
Возвращает: ничего или исключение.
-- Lock the console
uart.lock(uart.CONSOLE)
...
...
-- Unlock the console
uart.unlock(uart.CONSOLE)
uart.unlock(id)
Разблокировать UART вызывающим потоком.
- id: идентификатор устройства UART. Используйте uart.UARTx, определенный для этой цели.
Возвращает: ничего или исключение.
-- Lock the console
uart.lock(uart.CONSOLE)
...
...
-- Unlock the console
uart.unlock(uart.CONSOLE)
uart.write(id, data)
Записать данные в устройство UART. Данные могут быть байтом (сырые данные) или строкой.
- id: идентификатор устройства UART. Используйте uart.UARTx, определенный для этой цели.
- data (данные): данные для записи могут быть либо байтом (от 0 до 255), либо строкой.
Возвращает: ничего или исключение.
-- Attach an UART device to UART2, 115200 bps, 8N1
uart.attach(uart.UART2, 115200, 8, uart.PARNONE, uart.STOP1)
-- Sends AT
uart.write(uart.UART2, "AT")
-- Sends \n and \r
uart.write(uart.UART2, '\n')
uart.write(uart.UART2, '\r')
uart.read(id, format, timeout)
Читать данные из устройства UART.
Аргументы:
- id: идентификатор устройства UART. Используйте uart.UARTx, определенный для этой цели.
- format (формат): строка, указывающая формат типа данных для чтения. Может быть “*l” для чтения строки без ожидания символа конца строки, “*el” для чтения строки до получения символа конца строки или “*c” для чтения байта.
- timeout (тайм-аут): тайм-аут, выраженный в миллисекундах. Эта функция блокирует текущий поток до получения всех данных в указанный тайм-аут.
Возвращает: прочитанные данные, или nil, если ничего не получено в указанный тайм-аут, или исключение.
-- Attach an UART device to UART2, 115200 bps, 8N1
uart.attach(uart.UART2, 115200, 8, uart.PARNONE, uart.STOP1)
-- Read line from UART, with a 500 milliseconds timeout
uart.read(uart.UART2, "*l", 500)
uart.consume(id)
Удалить все байты, присутствующие в очереди UART, не выполняя с ними никаких действий.
Аргументы:
- id: идентификатор модуля UART. Используйте uart.UARTx, определенный для этой цели.
Возвращает: ничего или исключение.
-- Attach an UART device to UART2, 115200 bps, 8N1
uart.attach(uart.UART2, 115200, 8, uart.PARNONE, uart.STOP1)
-- Do something
...
...
-- Consume all bytes from buffer
uart.consume(uart.UART2)