模块 serial
USB 串行设备接口
函数
| add_handler (args) | 添加新的串行设备处理器 |
| send (dev, data) | 向串行设备发送消息 |
表
| cc | CC(特殊字符)常量 |
| iflag | iflag 常量 |
| oflag | oflag 常量 |
| cflag | cflag 常量 |
| lflag | lflag 常量 |
| speed | 速度常量 |
函数
- add_handler (args)
-
添加新的串行设备处理器
参数:
- args
- id 处理器的唯一标识符
- match 函数(attrs),如果处理器应该接受具有给定属性的设备则返回 true, 否则返回 false
- configure 函数(term),接收设备的初始终端设置并返回新的终端 设置。回调应该使用按位操作修改输入表,然后返回输入表
- add 函数(id, name, dev),当此处理器的新设备已连接并初始化时调用
- remove 函数(id),当此处理器的已连接设备已断开连接时调用
- event 函数(id, data),当从此处理器的已连接设备接收到消息时调用。 data 参数的长度不会超过 255 字节。超过 255 字节的消息将在 多个事件回调中分散。多个短于 255 字节的消息可能出现在单个事件 回调中。
用法:
friends = {} serial.add_handler({ id = "example_id", -- 可以是数字或字符串 match = function(attrs) local is_match = ( (attrs["vendor"] == "FTDI") and (attrs["model"] == "FT232R") and (attrs["serial"] == "ABC123") and (attrs["interface"] == "00") ) return is_match end, configure = function(term) -- 设置波特率。 term.ispeed = term.ispeed | serial.speed.B115200 term.ospeed = term.ospeed | serial.speed.B115200 -- 启用一些标志。 term.iflag = term.iflag | serial.iflag.INCLR term.oflag = term.oflag | serial.oflag.ONLCR term.cflag = term.cflag | serial.cflag.CS8 -- 禁用一些标志。 term.lflag = term.lflag & (~serial.lflag.ECHO) -- 返回复制并修改的表。 return term end, add = function(id, name, dev) print("说你好...") serial.send(dev, "hello " .. name .. "!") tab.insert(friends, id, dev) end, remove = function(id) print("说再见已经太晚了。") tab.remove(friends, id) end, event = function(id, data) print(friends[id] .. " 说:", data) end }) - args
- send (dev, data)
-
向串行设备发送消息
参数:
- dev 不透明设备指针
- data 要发送的字符串消息
表
- cc
-
CC(特殊字符)常量
字段:
- VINTR INTR 字符
- VQUIT QUIT 字符
- VERASE ERASE 字符
- VKILL KILL 字符
- VEOF EOF 字符
- VTIME TIME 值
- VMIN MIN 值
- VSTART START 字符
- VSTOP STOP 字符
- VSUSP SUSP 字符
- VEOL EOL 字符
- iflag
-
iflag 常量
字段:
- IGNBREAK 忽略中断条件。
- BRKINT 中断时发出信号。
- IGNPAR 忽略具有奇偶校验错误的字符。
- PARMRK 标记奇偶校验和帧错误。
- INPCK 启用输入奇偶校验。
- ISTRIP 剥离字符的第 8 位。
- INCLR 在输入时将 NL 映射到 CR。
- IGNCR 忽略 CR。
- ICRNL 在输入时将 CT 映射到 NL。
- IUCLC 在输入时将大写字符映射为小写(不在 POSIX 中)。
- IXON 启用开始/停止输出控制。
- IXANY 启用任何字符重新启动输出。
- IXOFF 启用开始/停止输入控制。
- IMAXBEL 启用开始/停止输入控制。
- IUTF8 输入是 UTF8(不在 POSIX 中)。
- oflag
-
oflag 常量
字段:
- OPOST 后处理输出。
- OLCUC 在输出时将小写字符映射为大写(不在 POSIX 中)。
- ONLCR 在输出时将 NL 映射到 CR-NL。
- OCRNL 在输出时将 CR 映射到 NL。
- ONOCR 在第 0 列不输出 CR。
- ONLRET NL 执行 CR 功能。
- OFILL 使用填充字符进行延迟。
- OFDEL 填充是 DEL。
- VTDLY 选择垂直制表符延迟:
- VT0 垂直制表符延迟类型 0。
- VT1 垂直制表符延迟类型 1。
- cflag
-
cflag 常量
字段:
- CSIZE 字符大小
- CS5 每个字符/符号 5 位。
- CS6 每个字符/符号 6 位。
- CS7 每个字符/符号 7 位。
- CS8 每个字符/符号 8 位。
- CSTOPB 发送两个停止位,否则发送一个。
- CREAD 启用接收器。
- PARENB 奇偶校验启用。
- PARODD 奇校验,否则偶校验。
- HUPCL 最后关闭时挂断。
- CLOCAL 忽略调制解调器状态线。
- lflag
-
lflag 常量
字段:
- ISIG 启用信号。
- ICANON 规范输入(擦除和终止处理)。
- ECHO 启用回显。
- ECHOE 将擦除字符回显为纠错退格。
- ECHOK 回显 KILL。
- ECHONL 回显 NL。
- NOFLSH 中断或退出后禁用刷新。
- TOSTOP 为后台输出发送 SIGTTOU。
- IEXTEN 启用实现定义的输入处理。
- speed
-
速度常量
字段:
- B50 50 波特
- B75 75 波特
- B110 110 波特
- B134 134 波特
- B150 150 波特
- B200 200 波特
- B300 300 波特
- B600 600 波特
- B1200 1200 波特
- B1800 1800 波特
- B2400 2400 波特
- B4800 4800 波特
- B9600 9600 波特
- B19200 19200 波特
- B38400 38400 波特
- B57600 57600 波特
- B115200 115200 波特
- B230400 230400 波特
- B460800 460800 波特
- B500000 500000 波特
- B576000 576000 波特
- B921600 921600 波特
- B1000000 1000000 波特
- B1152000 1152000 波特
- B1500000 1500000 波特
- B2000000 2000000 波特
- B2500000 2500000 波特
- B3000000 3000000 波特
- B3500000 3500000 波特
- B4000000 4000000 波特