Main Content

serialport

连接到串行端口

自 R2019b 起

说明

serialport 对象表示与串行端口通信的串行客户端。在创建对象后,请使用圆点表示法设置其属性。

创建对象

描述

示例

s = serialport(port,baudrate) 连接到 port 指定的串行端口,波特率为 baudrate

s = serialport(port,baudrate,Name,Value) 连接到串行端口,并使用可选的名称-值对组参量设置其他属性。

s = serialport(不带参量)使用上次清除的 serialport 对象实例的属性设置连接到串行端口。保留的属性包括 PortBaudRateByteOrderFlowControlStopBitsDataBitsParityTimeoutTerminator。请参阅属性

输入参量

全部展开

串行端口名称,指定为字符向量或字符串标量。使用 serialportlist 获取已连接端口的列表。

示例: "COM2"

串行通信的波特率,指定为双精度。

示例: 9600

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

您可以使用名称-值对组来设置 DataBitsParityStopBitsFlowControlByteOrderTimeout 对象属性。请参阅属性了解其数据类型和允许的值。

示例: "Timeout",30

属性

全部展开

对象的创建属性

此 属性 为只读。

用于连接的串行端口,以字符串形式返回。

示例: "COM1"

数据类型: string

通信速度,以位/秒为单位,以双精度正整数形式返回。

示例: 14400

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

用于检查数据是否丢失或写入的奇偶校验,以 "none""even""odd" 形式返回。

示例: "odd"

数据类型: char | string

表示一个数据字符的位数,返回为 8765

示例: 8

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

指示字符或整个传输结束的位的模式,返回为 11.52

示例: 1

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

管理数据传输速率的模式,返回为 "none""hardware""software"

示例: "software"

数据类型: char | string

字节排列成较大数值的顺序,返回为 "little-endian""big-endian"。使用名称-值对组参量在创建对象时设置此属性。您也可以在创建对象后使用圆点表示法更改它。

示例: "little-endian"

数据类型: char | string

允许的完成读写操作的时间(以秒为单位),以数值形式返回。使用名称-值对组参量在创建对象时设置此属性。您也可以在创建对象后使用圆点表示法更改它。

示例: 60

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

自 R2024a 起

用于标识连接的标签,指定为字符串。使用 Tag 将标签应用于连接,您可以稍后使用 serialportfind 访问该连接。当您在一个函数中打开连接并使用另一个函数对该连接执行操作时,这样做非常有用。它对于定位和访问 App 回调中的连接也很有用。

示例: "pSupply"

数据类型: string

读取和写入属性

此 属性 为只读。

可供读取的字节数,以数值形式返回。

示例: 1024

数据类型: double

此 属性 为只读。

写入串行端口的字节数,以数值形式返回。

示例: 512

数据类型: double

用于读取和写入以 ASCII 字符结尾的数据的终止符字符,返回为 "LF""CR""CR/LF",或从 0 到 255(包括两者)的数字。如果读取终止符和写入终止符不同,则 Terminator 以这些值的 1×2 元胞数组形式返回。使用 configureTerminator 函数设置此属性。

示例: "CR"

数据类型: char | string

回调属性

字节可用回调触发模式,返回为 "off""byte""terminator"。此设置确定回调是关闭、由 BytesAvailableFcnCount 指定的字节数触发还是由 Terminator 指定的终止符触发。使用 configureCallback 函数设置此属性。

示例: "off"

数据类型: char | string

BytesAvailableFcn 指定的触发回调的数据字节数,以双精度形式返回。仅当 BytesAvailableFcnMode 属性为 "byte" 时,才使用此值。使用 configureCallback 函数设置这些属性。

示例: 128

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

由字节可用事件触发的回调函数,以函数句柄形式返回。接收到一定数量的字节或终止符会生成字节可用事件。在分配函数句柄之前,此属性为空。使用 configureCallback 函数设置此属性。

示例: @myFcn

数据类型: function_handle

由错误事件触发的回调函数,以函数句柄形式返回。发生异步读取或写入错误时,会生成错误事件。在分配函数句柄之前,此属性为空。

示例: @myErrFcn

数据类型: function_handle

用户数据的通用属性,以任何 MATLAB® 数据类型形式返回。例如,当回调函数触发事件时,可以使用此属性存储数据。

示例: datetime()

对象函数

read从串行端口读取数据
readline从串行端口读取 ASCII 字符串数据行
write将数据写入串行端口
writeline将 ASCII 数据行写入串行端口
serialbreakSend break to device connected to serial port
flush清空串行端口设备缓冲区
configureTerminator为与串行端口的 ASCII 字符串通信设置终止符
configureCallback为与串行端口设备的通信设置回调函数和触发条件
getpinstatus获取串行引脚状态
setRTS设置串行 RTS 引脚
setDTR设置串行 DTR 引脚
delete删除句柄对象
clear从工作区中删除项目、释放系统内存

示例

全部折叠

COM3 串行端口读取 uint32 数据的 16 个值。

s = serialport("COM3",9600,"Timeout",5);
data = read(s,16,"uint32");

当您在脚本中或在 MATLAB 命令行中使用 serialport 时,结果是由 MATLAB 工作区中的对象表示的连接。

s1 = serialport("COM3",9600)
s1 = 

  Serialport with properties:

                 Port: "COM3"
             BaudRate: 9600
                  Tag: ""
    NumBytesAvailable: 0

当其他变量中不存在对该同一连接的引用时,可以通过清除工作区变量来断开与串行端口的连接。

clear(S)

使用 serialportfind 确认连接已关闭。

serialportfind
ans =

     []

当一个 serialport 连接存在于 MATLAB 工作区中或保存为类属性或 App 属性时,可能无法在不同函数或 App 回调中访问 serialport 对象。在这种情况下,您可以使用 serialportfind 查找和删除该连接。

S = serialportfind
S = 

  Serialport with properties:

                 Port: "COM3"
             BaudRate: 9600
                  Tag: ""
    NumBytesAvailable: 0

要关闭此连接,请删除 S

delete(S)

此命令删除 serialport 对象并断开与设备的连接。如果您随后要重新连接到该设备,必须使用 serialport 创建一个新接口。

在删除后,调用 serialportfind 确认没有现有连接。

serialportfind
ans =

     []

请注意,变量 S 仍存在于工作区中,但它现在是无效句柄。

S
S = 

  handle to deleted Serialport

由于 serialport句柄对象,因此该变量在删除接口后仍存在。(有关这种类型的对象的详细信息,请参阅句柄对象行为。)您可以使用 clear 从工作区中删除无效的句柄。

clear S

版本历史记录

在 R2019b 中推出

全部展开

另请参阅

函数