uart ==== 作者:吴永 更新时间:2020年8月14日 关键字:UART、串口 ## uart uart 与虚拟 AT 交互接口 -------------- uart.setup() ~~~~~~~~~~~~ uart通讯 - 语法 ``baud = uart.setup( id, baud, databits, parity, stopbits,[msgmode,txDoneReport] )`` - 参数 +----------+-------------------------------------------------------+---+ | 参数 | 释义 | 取 | | | | 值 | | | | 范 | | | | 围 | +==========+=======================================================+===+ | id | 串口号 | 1 | | | | ( | | | | U | | | | A | | | | R | | | | T | | | | 1 | | | | ) | | | | , | | | | 2 | | | | ( | | | | U | | | | A | | | | R | | | | T | | | | 2 | | | | ) | | | | , | | | | 3 | | | | ( | | | | U | | | | A | | | | R | | | | T | | | | 3 | | | | ) | | | | , | | | | 0 | | | | x | | | | 8 | | | | 1 | | | | ( | | | | U | | | | S | | | | B | | | | ) | +----------+-------------------------------------------------------+---+ | baud | 波特率 | 可 | | | | 选 | | | | 1 | | | | 2 | | | | 0 | | | | 0 | | | | , | | | | 2 | | | | 4 | | | | 0 | | | | 0 | | | | , | | | | 4 | | | | 8 | | | | 0 | | | | 0 | | | | , | | | | 9 | | | | 6 | | | | 0 | | | | 0 | | | | , | | | | 1 | | | | 0 | | | | 4 | | | | 0 | | | | 0 | | | | , | | | | 1 | | | | 4 | | | | 4 | | | | 0 | | | | 0 | | | | , | | | | 1 | | | | 9 | | | | 2 | | | | 0 | | | | 0 | | | | , | | | | 2 | | | | 8 | | | | 8 | | | | 0 | | | | 0 | | | | , | | | | 3 | | | | 8 | | | | 4 | | | | 0 | | | | 0 | | | | , | | | | 5 | | | | 7 | | | | 6 | | | | 0 | | | | 0 | | | | , | | | | 1 | | | | 1 | | | | 5 | | | | 2 | | | | 0 | | | | 0 | | | | , | | | | 2 | | | | 3 | | | | 0 | | | | 4 | | | | 0 | | | | 0 | | | | , | | | | 4 | | | | 6 | | | | 0 | | | | 8 | | | | 0 | | | | 0 | | | | , | | | | 9 | | | | 2 | | | | 1 | | | | 6 | | | | 0 | | | | 0 | +----------+-------------------------------------------------------+---+ | databits | 数据位 | 8 | +----------+-------------------------------------------------------+---+ | parity | 校验位 | u | | | | a | | | | r | | | | t | | | | . | | | | P | | | | A | | | | R | | | | _ | | | | E | | | | V | | | | E | | | | N | | | | , | | | | u | | | | a | | | | r | | | | t | | | | . | | | | P | | | | A | | | | R | | | | _ | | | | O | | | | D | | | | D | | | | 或 | | | | u | | | | a | | | | r | | | | t | | | | . | | | | P | | | | A | | | | R | | | | _ | | | | N | | | | O | | | | N | | | | E | +----------+-------------------------------------------------------+---+ | stopbits | 停止位 | u | | | | a | | | | r | | | | t | | | | . | | | | S | | | | T | | | | O | | | | P | | | | _ | | | | 1 | | | | , | | | | u | | | | a | | | | r | | | | t | | | | . | | | | S | | | | T | | | | O | | | | P | | | | _ | | | | 2 | +----------+-------------------------------------------------------+---+ | msgmode | 0 或者默认 - 消息通知,1 - 无消息上报需要用户主动轮询 | 0 | | | | - | | | | 1 | +----------+-------------------------------------------------------+---+ | txDo | txdone消息上报开关。0:关闭,1:打开 | 0 | | neReport | | - | | | | 1 | +----------+-------------------------------------------------------+---+ - 返回值 串口的真实波特率 -------------- uart.write() ~~~~~~~~~~~~ 向串口写字符串或者整型数据 - 语法 ``uart.write( id, data1, [data2], ..., [datan] )`` - 参数 =========== ========================= ============= 参数 释义 取值范围 =========== ========================= ============= id 串口号 1-3,0x81(USB) data1 第一个字符串或8位整型数据 data2 第二个字符串或8位整型数据 datan(可选) 第n个字符串或8位整型数据 =========== ========================= ============= - 返回值 无 -------------- uart.getchar() ~~~~~~~~~~~~~~ 从串口读取单字符 - 语法 ``str = uart.getchar( id )`` - 参数 ==== ====== ============= 参数 释义 取值范围 ==== ====== ============= id 串口号 1-3,0x81(USB) ==== ====== ============= - 返回值 串口读出来的字符 -------------- uart.read() ~~~~~~~~~~~ 从串口读取字符串 - 语法 ``str = uart.read( id, format)`` - 参数 +--------+-------------------------------------------+---------------+ | 参数 | 释义 | 取值范围 | +========+===========================================+===============+ | id | 串口号 | 1-3,0x81(USB) | +--------+-------------------------------------------+---------------+ | 格式化 | \*l: | | | | 读取到结束字符:raw-latex:`\n或者阻塞发送` | | | | \*n:读取整型数据 \*s:读取到空格字符 | | | | 数字,number类型:只读取number长度的数据 | | +--------+-------------------------------------------+---------------+ :: uart.read(id, format) --- 读取串口数据(此接口不会阻塞,立即返回) -- @number id 串口ID -- @string or number format 读取串口数据的格式,有如下几种 -- number类型的数字:表示读取指定长度字节的数据 -- 如果缓冲区中没有数据,则返回空字符串,返回值为string类型 -- 如果缓冲区中的数据长度小于等于要读取的数据长度,则返回缓冲区中的所有数据,返回值为string类型 -- 如果缓冲区中的数据长度大于要读取的数据长度,则返回要读取的长度的数据,返回值为string类型 -- string类型的*l: 表示读取到换行符\n -- 如果缓冲区中没有数据,则返回空字符串,返回值为string类型 -- 如果缓冲区中的数据没有\n,则返回缓冲区中的所有数据,返回值为string类型 -- 如果缓冲区中的数据有\n,则返回到\n结束的所有数据(包括\n),返回值为string类型 -- string类型的*n: 表示读取整型数据 -- 如果缓冲区中没有数据,则返回0,返回值为number类型 -- 如果缓冲区中的第一个字节的数据不是+、-、数字,则返回0,返回值为number类型 -- 如果缓冲区中的前几个字节满足整型数据格式[+-]%d+,则按照最长匹配返回数据,返回值为number类型 -- string类型的*s: 表示读取到空格字符 -- 如果缓冲区中没有数据,则返回空字符串,返回值为string类型 -- 如果缓冲区中的数据没有空格,则返回缓冲区中的所有数据,返回值为string类型 -- 如果缓冲区中的数据有空格,则返回到空格结束的所有数据(不包括空格),返回值为string类型 - 返回值 串口读出到的数据 -------------- uart.set_rs485_oe() ~~~~~~~~~~~~~~~~~~~ - 语法 ``uart.set_rs485_oe(id, io[, level] [, timeUs])`` - 参数 +--------+------------------------------------------------------------+ | 参数 | 释义 | +========+============================================================+ | id | 串口id | +--------+------------------------------------------------------------+ | io | GPIO值 pio.Pxx | +--------+------------------------------------------------------------+ | level | 输出使能电平有效值 | | | ,默认1,配置为1时表示高电平发送,配置为0时表示低电平发送 | +--------+------------------------------------------------------------+ | timeUs | 485 | | | o | | | e转向延迟时间,单位US,缺省时为0延迟5个当前波特率的时钟时间 | +--------+------------------------------------------------------------+ - 返回值 无 - 例子 .. code:: lua uart.setup(UART_ID,115200,8,uart.PAR_NONE,uart.STOP_1,nil,1) --必须先使用setup,并且最后一个参数是1(打开发送完成后的通知功能) uart.set_rs485_oe(UART_ID, pio.P2_0) --仅4G 0013版本之后支持 -------------- uart.close() ~~~~~~~~~~~~ 关闭 uart 接口 - 语法 ``uart.close(id)`` - 参数 ==== ====== ============= 参数 释义 取值范围 ==== ====== ============= id 串口号 1-3,0x81(USB) ==== ====== ============= - 返回值 无 --------------