Main Content

serial

(将删除)创建串行端口对象

在以后的版本中将会删除 serial。请改用 serialport。有关更新代码的详细信息,请参阅兼容性考虑

说明

示例

s = serial('port') 创建一个与 'port' 指定的串行端口关联的串行端口对象 s。如果 'port' 不存在或已被占用,则无法将该串行端口对象连接到设备。

示例

s = serial('port',Name,Value) 使用指定的属性名称和属性值创建一个串行端口对象。如果指定的属性名称或属性值无效,则返回错误并且不会创建串行端口对象。

示例

全部折叠

以下示例说明如何创建串行端口对象。

使用 seriallist 函数查找可用的串行端口。

seriallist

创建串行端口对象 s 并将其与串行端口 COM1 相关联。您必须将该端口指定为第一个参数才能创建串行端口对象。

s = serial('COM1');

创建与串行端口 COM3 相关联的串行端口对象 s2 并设置属性。您可以选择通过在对象创建期间在端口参数之后指定名称-值对组来设置通信属性。此示例将波特率设置为 4800,将终止符设置为 CR。您可以在对象输出中看到这些值。

s2 = serial('COM3','BaudRate',4800,'Terminator','CR')

输入参数

全部折叠

串行端口名称,指定为字符向量或字符串。seriallist 函数提供可用串行端口的列表。您必须指定端口才能创建串行端口对象。

端口名称取决于串行端口所在的平台。该列表是不同平台上的串行构造函数示例。

平台串行端口构造函数
Linux® 64s = serial('/dev/ttyS0')
macOS 64s = serial('/dev/tty.KeySerial1')
Windows® 64s = serial('COM1')

示例: s = serial('COM1')

数据类型: char | string

名称-值参数

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

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

示例: s = serial('COM2','BaudRate',1200,'DataBits',7);

有关可用于 serial 的串行端口对象属性的列表,请参阅 serial 属性

注意

端口必须是用于创建串行对象的第一个参数。然后,您可以在该端口后使用任意数量的受支持的名称-值对组。

位传输速率,指定为逗号分隔的对组,其中包含 'BaudRate' 和一个双精度值。您将波特率配置为位/秒。传输的位包括开始位、数据位、奇偶校验位(如果用到)和停止位。但是,存储的位只有数据位。

波特率是指通信信道中传输信息的速率。在串行端口环境中,“9600 波特”表示串行端口每秒最多可以传输 9600 位。如果信息单位是一波特(一位),则比特率和波特率相同。如果一波特等于 10 位(例如,8 个数据位加 2 个成帧位),则比特率仍是 9600,而波特率是 9600/10,即 960。BaudRate 始终配置为位/秒。

注意

要成功地读取或写入数据,必须将计算机和外围设备配置为相同的波特率。

标准波特率包括 110、300、600、1200、2400、4800、9600、14400、19200、38400、57600、115200、128000 和 256000 位/秒。

使用以下语法创建串行对象后,还可以设置 BaudRate 属性:

s.BaudRate = 4800;

示例: s = serial('COM1','BaudRate',4800);

数据类型: double

设备的字节顺序,以逗号分隔的对组形式指定,其中包含 'ByteOrder' 以及 littleEndianbigEndian。如果 ByteOrderlittleEndian,则设备将第一个字节存储在第一个内存地址中。如果 ByteOrderbigEndian,则设备将最后一个字节存储在第一个内存地址中。

例如,假设十六进制值 4F52 将存储在设备内存中。因为该值由两个字节 4F 和 52 组成,所以使用两个内存位置。使用 big-endian 格式时,4F 首先存储在较低的存储地址中。使用 little-endian 格式时,52 首先存储在较低的存储地址中。

littleEndian 的字节顺序是默认值,如果未指定属性,则在读取和写入操作中使用该默认值。您只需指定属性即可将字节顺序更改为 bigEndian

使用以下语法创建串行对象后,还可以设置 ByteOrder 属性:

s.ByteOrder = 'bigEndian';

注意

在执行读取或写入操作之前,将 ByteOrder 配置为适合您设备的值。有关您的设备存储字节的顺序的信息,请参阅设备文档。

示例: s = serial('COM1','ByteOrder','bigEndian');

数据类型: char | string

要传输的数据位数,指定为以逗号分隔的对组,其中包括 'DataBits'5678,这是默认设置。数据以包含五、六、七或八个位的一个系列进行传输,最低有效位先发送。传输 ASCII 字符至少需要 7 个数据位。传输二进制数据需要 8 个位。五位和六位数据格式用于专用通信设备。

注意

计算机和外围设备都必须配置为传输相同的数据位数。

除数据位外,串行数据格式还包括一个开始位、一个或两个停止位以及可能存在的一个奇偶校验位。使用 StopBits 属性指定停止位数,并使用 Parity 属性指定奇偶校验检查的类型。

使用以下语法创建串行对象后,还可以设置 DataBits 属性:

s.DataBits = 7;

示例: s = serial('COM1','DataBits',7);

数据类型: double

奇偶校验检查的类型,以逗号分隔的对组形式指定,其中包含 'Parity' 以及 noneoddevenmarkspace

{none}

默认值。没有奇偶校验检查。不执行奇偶校验检查,并且不传输奇偶校验位。

odd

奇数奇偶校验检查。对数据中的标记位 (1) 的数量进行计数,并对奇偶校验位使能或禁能以获得奇数个标记位。

even

偶数奇偶校验检查。对数据中的标记位的数量进行计数,并对奇偶校验位使能或禁能以获得偶数个标记位。

mark

标记奇偶校验检查。奇偶校验位被使能。

space

空号奇偶校验检查。奇偶校验位被禁能。

奇偶校验检查只能检测一个位的错误。两个位中的错误可能导致数据具有看似有效的奇偶校验,而实际上它不正确。

除奇偶校验位之外,串行数据格式还包括一个开始位、5 到 8 个数据位以及一个或两个停止位。使用 DataBits 属性指定数据位数,使用 StopBits 属性指定停止位数。

使用以下语法创建串行对象后,还可以设置 Parity 属性:

s.Parity = 'even';

示例: s = serial('COM1','Parity','even');

数据类型: char | string

用于指示字节结束的位数,以逗号分隔的对组形式指定,包括 'StopBits'11.52。如果 StopBits1,则使用一个停止位来指示数据传输的结束。如果 StopBits2,则使用两个停止位来指示数据传输的结束。如果 StopBits1.5,则传输停止位的时间是正常传输一个位所需时间的 150%。

注意

计算机和外围设备都必须配置为传输相同的停止位数。

可能值的汇总:

{1}

默认值。发送一个停止位以指示字节的结束。

1.5

传输停止位的时间是正常传输一个位所需时间的 150%。

2

发送两个停止位以指示字节的结束。

除停止位之外,串行数据格式还包括一个开始位、5 到 8 个数据位以及可能存在的一个奇偶校验位。使用 DataBits 属性指定数据位数,并使用 Parity 属性指定奇偶校验检查的类型。

使用以下语法创建串行对象后,还可以设置 StopBits 属性:

s.StopBits = 2;

示例: s = serial('COM1','StopBits',2);

数据类型: double

终止符字符,指定为逗号分隔的对组,其中包含 'Terminator' 和一个字符串。可以将 Terminator 配置为 0 到 127 之间的整数值,表示字符的 ASCII 代码,也可以将 Terminator 配置为 ASCII 字符。例如,要将 Terminator 配置为回车符,请将值指定为 CR13。要将 Terminator 配置为换行符,请将值指定为 LF10。也可以将 Terminator 设置为 CR/LFLF/CR。如果 TerminatorCR/LF,则终止符是回车符后跟换行符。如果 Terminator 是 LF/CR,则终止符是换行符后跟回车符。请注意,这两个值没有对应的整数值。

此外,还可以将 Terminator 设置为 1×2 元胞数组。元胞的第一个元素是读取终止符,第二个元素是写入终止符。

使用 fprintf 函数执行写入操作时,出现的所有 \n 都将替换为 Terminator 属性值。请注意,%s\nfprintf 的默认格式。使用 fgetlfgetsfscanf 的读取操作在读取到 Terminator 值时即结束。二元运算将忽略终止符。

BytesAvailableFcnMode 设置为 terminator 时,您还可以使用终止符生成字节可用事件。

使用以下语法创建串行对象后,还可以设置 Terminator 属性:

s.Terminator = 'CR';

示例: s = serial('COM1','Terminator','CR');

数据类型: char | string

提示

有关可用于 serial 的串行端口对象属性的列表,请参阅serial 属性

能够与设备通信之前,必须使用 fopen 函数将设备连接到 obj。已连接的串行端口对象的 open 属性值为 Status。如果尝试在该对象未连接到设备时执行读取或写入操作,将会返回错误。只能将一个串行端口对象连接到给定的串行端口。

版本历史记录

在 R2006a 之前推出

全部展开

R2022a: 警告

在以后的版本中将会删除 serial。请改用 serialport

以下示例说明如何使用推荐功能连接到串行端口。

功能请改用以下项
s = serial("COM1");
s.BaudRate = 115200;
fopen(s)
s = serialport("COM1",115200);

推荐的接口具有额外的功能和改进的性能。有关使用推荐功能的详细信息,请参阅Transition Your Code to serialport Interface

另请参阅

函数