跳轉到內容

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 流量控制。
華夏公益教科書