Alcor6L/eLua/uart
外观
< Alcor6L
此模块包含用于访问 eLua CPU 串行端口 (UART) 的函数。
UART 标识符可以是
- 0、1 等,用于物理串行端口,
uart.VUART0
到uart.VUART7
,如果 eLua 中启用了虚拟 UART 支持,或者- 176,用于 USB CDC 串行端口。
设置串行端口。请注意,您不能对虚拟 UART 调用此函数。
baud = uart.setup( id, baud, databits, parity, stopbits )
- id - 串行端口的 ID
- baud - 串行波特率
- databits - 数据位的数量
- parity - 奇偶校验类型,可以是
uart.PAR_EVEN
、uart.PAR_ODD
或uart.PAR_NONE
- stopbits - 停止位的数量,可以是
uart.STOP_1
、uart.STOP_1_5
或uart.STOP_2
返回值
- baud - 在串行端口上设置的实际波特率。根据硬件,这可能与 baud 参数的值不同
向串行端口写入一个或多个字符串或 8 位整数(原始数据)。如果写入原始数据,其值(由整数表示)必须在 0 到 255 之间。
uart.write( id, data1, [data2], ..., [datan] )
- id - 串行端口的 ID。
- data1 - 要写入的第一个字符串/8 位整数。
- data2 (可选) - 要写入的第二个字符串/8 位整数。
- datan (可选) - 要写入的第 n 个字符串/8 位整数。
从串行端口读取单个字符
str = uart.getchar( id, [timeout], [timer_id] )
- id - 串行端口的 ID
- timeout (可选) - 操作的超时时间,可以是 uart.NO_TIMEOUT(非阻塞操作)或 0,uart.INF_TIMEOUT(阻塞操作),或一个正数,以微秒为单位指定超时时间。此参数的默认值为 uart.INF_TIMEOUT。
- timer_id (可选) - 用于测量超时时间的计时器的 ID。如果未指定,则默认为系统计时器。
返回值
- str - 从串行端口读取的字符,作为字符串,或在等待字符时发生的超时时的空字符串。
根据格式说明符从串行端口读取一个或多个字符
str = uart.read( id, format, [timeout], [timer_id] )
- id - 串行端口的 ID
- format - 要读取的数据的格式。这可以是
- '*l' - 读取直到找到换行符(\n)(\n 不返回)或超时。
- '*n' - 读取一个整数。整数可以可选地带符号。读取将持续进行,直到检测到第一个非数字字符或发生超时。这是唯一一种 read 返回数字而不是整数的情况。
- '*s' - 读取直到找到空格字符(如空格或制表符)(空格字符不返回)或超时。
- 正数 - 在返回之前最多读取这么多字符(如果发生超时,读取可能会提前停止)。
- timeout (可选) - 操作的超时时间,可以是 uart.NO_TIMEOUT(非阻塞操作)或 0,uart.INF_TIMEOUT(阻塞操作),或一个正数,以微秒为单位指定超时时间。此参数的默认值为 uart.INF_TIMEOUT。
- timer_id (可选) - 用于测量超时时间的计时器的 ID。如果未指定,则默认为系统计时器。
返回值
- str - 从串行端口读取的数据,作为字符串(或如果格式为 '*n',则作为数字)。如果发生超时,则仅返回超时前读取的数据。如果函数在尝试读取第一个字符时超时,则返回空字符串
设置 UART 缓冲区的大小。请注意,对虚拟 UART 调用此函数,bufsize = 0 是不允许的。
uart.set_buffer( id, bufsize )
- id - 串行端口的 ID
- bufsize - 缓冲区的大小(必须是 2 的幂)或 0,用于在指定的 UART 上禁用缓冲。
设置 UART 上的流量控制。请注意,此函数仅适用于物理端口,如果在虚拟 UART 上调用它,它将返回错误。
uart.set_flow_control( id, type )
- id - 串行端口的 ID。
- type - 流量控制类型,可以是
uart.FLOW_NONE
(无流量控制),uart.FLOW_RTS
用于 RTS 流量控制,uart.FLOW_CTS
用于 CTS 流量控制或uart.FLOW_RTS + uart.FLOW_CTS
用于完整的 RTS/CTS 流量控制。