跳转到内容

Alcor6L/eLua/uart

来自维基教科书,开放的书籍,开放的世界

此模块包含用于访问 eLua CPU 串行端口 (UART) 的函数。

UART 标识符可以是

  • 0、1 等,用于物理串行端口,
  • uart.VUART0uart.VUART7,如果 eLua 中启用了虚拟 UART 支持,或者
  • 176,用于 USB CDC 串行端口。

uart.setup

[编辑 | 编辑源代码]

设置串行端口。请注意,您不能对虚拟 UART 调用此函数。

baud = uart.setup( id, baud, databits, parity, stopbits )
  • id - 串行端口的 ID
  • baud - 串行波特率
  • databits - 数据位的数量
  • parity - 奇偶校验类型,可以是 uart.PAR_EVENuart.PAR_ODDuart.PAR_NONE
  • stopbits - 停止位的数量,可以是 uart.STOP_1uart.STOP_1_5uart.STOP_2

返回值

  • baud - 在串行端口上设置的实际波特率。根据硬件,这可能与 baud 参数的值不同

uart.write

[编辑 | 编辑源代码]

向串行端口写入一个或多个字符串或 8 位整数(原始数据)。如果写入原始数据,其值(由整数表示)必须在 0 到 255 之间。

uart.write( id, data1, [data2], ..., [datan] )
  • id - 串行端口的 ID。
  • data1 - 要写入的第一个字符串/8 位整数。
  • data2 (可选) - 要写入的第二个字符串/8 位整数。
  • datan (可选) - 要写入的第 n 个字符串/8 位整数。

uart.getchar

[编辑 | 编辑源代码]

从串行端口读取单个字符

str = uart.getchar( id, [timeout], [timer_id] )
  • id - 串行端口的 ID
  • timeout (可选) - 操作的超时时间,可以是 uart.NO_TIMEOUT(非阻塞操作)或 0,uart.INF_TIMEOUT(阻塞操作),或一个正数,以微秒为单位指定超时时间。此参数的默认值为 uart.INF_TIMEOUT。
  • timer_id (可选) - 用于测量超时时间的计时器的 ID。如果未指定,则默认为系统计时器。

返回值

  • str - 从串行端口读取的字符,作为字符串,或在等待字符时发生的超时时的空字符串。

uart.read

[编辑 | 编辑源代码]

根据格式说明符从串行端口读取一个或多个字符

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.set_buffer

[编辑 | 编辑源代码]

设置 UART 缓冲区的大小。请注意,对虚拟 UART 调用此函数,bufsize = 0 是不允许的。

uart.set_buffer( id, bufsize )
  • id - 串行端口的 ID
  • bufsize - 缓冲区的大小(必须是 2 的幂)或 0,用于在指定的 UART 上禁用缓冲。

uart.set_flow_control

[编辑 | 编辑源代码]

设置 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 流量控制。
华夏公益教科书