serial
(将删除)创建串行端口对象
在以后的版本中将会删除 serial
。请改用 serialport
。有关更新代码的详细信息,请参阅兼容性考虑。
说明
s = serial(
使用指定的属性名称和属性值创建一个串行端口对象。如果指定的属性名称或属性值无效,则返回错误并且不会创建串行端口对象。'port'
,Name,Value
)
示例
创建串行端口对象
以下示例说明如何创建串行端口对象。
使用 seriallist
函数查找可用的串行端口。
seriallist
创建串行端口对象 s
并将其与串行端口 COM1
相关联。您必须将该端口指定为第一个参数才能创建串行端口对象。
s = serial('COM1');
创建与串行端口 COM3
相关联的串行端口对象 s2
并设置属性。您可以选择通过在对象创建期间在端口参数之后指定名称-值对组来设置通信属性。此示例将波特率设置为 4800,将终止符设置为 CR。您可以在对象输出中看到这些值。
s2 = serial('COM3','BaudRate',4800,'Terminator','CR')
输入参数
'port'
— 串行端口名称
字符向量 | 字符串
串行端口名称,指定为字符向量或字符串。seriallist
函数提供可用串行端口的列表。您必须指定端口才能创建串行端口对象。
端口名称取决于串行端口所在的平台。该列表是不同平台上的串行构造函数示例。
平台 | 串行端口构造函数 |
---|---|
Linux® 64 | s = serial('/dev/ttyS0') |
macOS 64 | s = serial('/dev/tty.KeySerial1') |
Windows® 64 | s = 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 (默认) | 双精度值
位传输速率,指定为逗号分隔的对组,其中包含 '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
— 设备的字节顺序
littleEndian (默认) | bigEndian
设备的字节顺序,以逗号分隔的对组形式指定,其中包含 'ByteOrder'
以及 littleEndian
或 bigEndian
。如果 ByteOrder
是 littleEndian
,则设备将第一个字节存储在第一个内存地址中。如果 ByteOrder
是 bigEndian
,则设备将最后一个字节存储在第一个内存地址中。
例如,假设十六进制值 4F52 将存储在设备内存中。因为该值由两个字节 4F 和 52 组成,所以使用两个内存位置。使用 big-endian 格式时,4F 首先存储在较低的存储地址中。使用 little-endian 格式时,52 首先存储在较低的存储地址中。
littleEndian
的字节顺序是默认值,如果未指定属性,则在读取和写入操作中使用该默认值。您只需指定属性即可将字节顺序更改为 bigEndian
。
使用以下语法创建串行对象后,还可以设置 ByteOrder
属性:
s.ByteOrder = 'bigEndian';
注意
在执行读取或写入操作之前,将 ByteOrder
配置为适合您设备的值。有关您的设备存储字节的顺序的信息,请参阅设备文档。
示例: s = serial('COM1','ByteOrder','bigEndian');
数据类型: char
| string
DataBits
— 要传输的数据位数
8 (默认) | 5 | 6 | 7
要传输的数据位数,指定为以逗号分隔的对组,其中包括 'DataBits'
和 5
、6
、7
或 8
,这是默认设置。数据以包含五、六、七或八个位的一个系列进行传输,最低有效位先发送。传输 ASCII 字符至少需要 7 个数据位。传输二进制数据需要 8 个位。五位和六位数据格式用于专用通信设备。
注意
计算机和外围设备都必须配置为传输相同的数据位数。
除数据位外,串行数据格式还包括一个开始位、一个或两个停止位以及可能存在的一个奇偶校验位。使用 StopBits
属性指定停止位数,并使用 Parity
属性指定奇偶校验检查的类型。
使用以下语法创建串行对象后,还可以设置 DataBits
属性:
s.DataBits = 7;
示例: s = serial('COM1','DataBits',7);
数据类型: double
Parity
— 奇偶校验检查的类型
none (默认) | 奇数 | 偶数 | 传号 | 空格
奇偶校验检查的类型,以逗号分隔的对组形式指定,其中包含 'Parity'
以及 none
、odd
、even
、mark
或 space
。
| 默认值。没有奇偶校验检查。不执行奇偶校验检查,并且不传输奇偶校验位。 |
| 奇数奇偶校验检查。对数据中的标记位 (1) 的数量进行计数,并对奇偶校验位使能或禁能以获得奇数个标记位。 |
| 偶数奇偶校验检查。对数据中的标记位的数量进行计数,并对奇偶校验位使能或禁能以获得偶数个标记位。 |
| 标记奇偶校验检查。奇偶校验位被使能。 |
| 空号奇偶校验检查。奇偶校验位被禁能。 |
奇偶校验检查只能检测一个位的错误。两个位中的错误可能导致数据具有看似有效的奇偶校验,而实际上它不正确。
除奇偶校验位之外,串行数据格式还包括一个开始位、5 到 8 个数据位以及一个或两个停止位。使用 DataBits
属性指定数据位数,使用 StopBits
属性指定停止位数。
使用以下语法创建串行对象后,还可以设置 Parity
属性:
s.Parity = 'even';
示例: s = serial('COM1','Parity','even');
数据类型: char
| string
StopBits
— 用于指示字节结尾的位数
1 (默认) | 1.5 | 2
用于指示字节结束的位数,以逗号分隔的对组形式指定,包括 'StopBits'
和 1
、1.5
或 2
。如果 StopBits
是 1
,则使用一个停止位来指示数据传输的结束。如果 StopBits
是 2
,则使用两个停止位来指示数据传输的结束。如果 StopBits
是 1.5
,则传输停止位的时间是正常传输一个位所需时间的 150%。
注意
计算机和外围设备都必须配置为传输相同的停止位数。
可能值的汇总:
| 默认值。发送一个停止位以指示字节的结束。 |
| 传输停止位的时间是正常传输一个位所需时间的 150%。 |
| 发送两个停止位以指示字节的结束。 |
除停止位之外,串行数据格式还包括一个开始位、5 到 8 个数据位以及可能存在的一个奇偶校验位。使用 DataBits
属性指定数据位数,并使用 Parity
属性指定奇偶校验检查的类型。
使用以下语法创建串行对象后,还可以设置 StopBits
属性:
s.StopBits = 2;
示例: s = serial('COM1','StopBits',2);
数据类型: double
Terminator
— 终止符字符
字符串
终止符字符,指定为逗号分隔的对组,其中包含 'Terminator'
和一个字符串。可以将 Terminator
配置为 0 到 127 之间的整数值,表示字符的 ASCII 代码,也可以将 Terminator
配置为 ASCII 字符。例如,要将 Terminator
配置为回车符,请将值指定为 CR
或 13
。要将 Terminator
配置为换行符,请将值指定为 LF
或 10
。也可以将 Terminator
设置为 CR/LF
或 LF/CR
。如果 Terminator
是 CR/LF
,则终止符是回车符后跟换行符。如果 Terminator 是 LF/CR
,则终止符是换行符后跟回车符。请注意,这两个值没有对应的整数值。
此外,还可以将 Terminator
设置为 1×2 元胞数组。元胞的第一个元素是读取终止符,第二个元素是写入终止符。
使用 fprintf
函数执行写入操作时,出现的所有 \n
都将替换为 Terminator
属性值。请注意,%s\n
是 fprintf
的默认格式。使用 fgetl
、fgets
或 fscanf
的读取操作在读取到 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。
R2021b: 将删除
serial
函数运行而没有发出警告,但代码分析器指示将在以后的版本中删除 serial
。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)