"串行" (RS-232 / RS-422 串行协议)
"Serial" 通过 RS-232 和 RS-422 协议为串行通信提供通用的接口.
串行通信一般通过基于 Unix 系统的 /dev/ttyXX 设备或基于 Windows 系统的 COM 端口起作用.
串行口的物理连接器包括 D-超小型 25 针连接器和 DE-9 9 针连接器.
打开设备
- 可以给出以下选项:
-
"BaudRate" 9600 数据传输率(比特/秒) "DataBits" 8 每帧使用的数据位数 "Handshake" None 流控制握手协议 "IgnoreBreak" False 是否忽略中断 "Parity" None 设置校验位 "ReadBufferSize" 4096 读缓冲区的大小(字节) "StopBits" None 使用的停止位数 - 典型的波特率包括:4800、9600、19200、38400、57600、115200、230400.
- "DataBits" 给出用于传送数据的每字节的位数. 可能的值为:5、6、7、8、9.
- 流控制握手协议 "Handshake" 的可能设置为:None、"RTS"、\"XOnXoff\.
- "Parity",指定校验位应如何设定。可能值为:None、"Even"、"Odd"、"Mark"、"Space".
- "StopBits" 给出用于分离数据帧的位数. 可能值为:None、1、1.5、2.
DeviceOpen["Serial"]
打开默认的串行端口.
DeviceOpen["Serial",name]
打开带有指定名称的串行端口. 在基于 Unix 的系统中一般的名称为 "/dev/ttyXX" 或 "/dev/tty.usbserialXX",在 Windows 中为 "COM1"、"COM2" 等.
DeviceOpen["Serial",opts]
打开带有指定选项的默认串行端口.
配置设备
- 不需要配置. 使用 DeviceOpen 为串行连接设置参数.
读取数据
- Wolfram 语言函数例如 DeviceReadLatest 和 DeviceReadTimeSeries 也被支持.
- 在 Wolfram 语言中字节用整数值表示.
- 字节列表可以使用 FromCharacterCode 转换成字符串.
- "ReadTerminator" 的设定可以是单个字节或字符.
- 如果没有数据可读,读函数在预设 10 秒后会超时.
DeviceRead[dev]
从串行连接读取单个字节,返回整数值.
DeviceRead[dev,"String"]
从串行连接读取单个字符,以字符串形式返回字符.
DeviceReadBuffer[dev]
读取串行连接缓冲区中的所有字节,返回整数列表.
DeviceReadBuffer[dev,n]
读取串行连接缓冲区中的最新 n 个字节.
DeviceReadBuffer[dev,"ReadTerminator"->term]
从串行端口缓冲区中读取字节直到结束符号 term.
写入数据
- Wolfram 语言函数例如 DeviceWriteBuffer 也被支持.
- 字节可被指定为 0 到 255 间的整数或单个 ASCII 字符串.
DeviceWrite[dev,b]
把一个字节 b 编写入串行连接.
DeviceWrite[dev,{b1,b2,…}]
把一个字节列表 bi 编写入串行连接.
DeviceWrite[dev,"string"]
以字符串形式把字节写入串行连接.
执行命令
- "SerialReadyQ" 命令可用于检查从串行连接读取是否被阻挡.
DeviceExecute[dev,"ReadFlush"]
刷新任何已读和缓冲的数据.
DeviceExecute[dev,"SerialReadyQ"]
关闭和释放资源
DeviceClose[dev]
关闭串行连接并释放相关资源.