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')
输入参数
串行端口名称,指定为字符向量或字符串。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 波特”表示串行端口每秒最多可以传输 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,则设备将第一个字节存储在第一个内存地址中。如果 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' 和 5、6、7 或 8,这是默认设置。数据以包含五、六、七或八个位的一个系列进行传输,最低有效位先发送。传输 ASCII 字符至少需要 7 个数据位。传输二进制数据需要 8 个位。五位和六位数据格式用于专用通信设备。
注意
计算机和外围设备都必须配置为传输相同的数据位数。
除数据位外,串行数据格式还包括一个开始位、一个或两个停止位以及可能存在的一个奇偶校验位。使用 StopBits 属性指定停止位数,并使用 Parity 属性指定奇偶校验检查的类型。
使用以下语法创建串行对象后,还可以设置 DataBits 属性:
s.DataBits = 7;
示例: s = serial('COM1','DataBits',7);
数据类型: double
奇偶校验检查的类型,以逗号分隔的对组形式指定,其中包含 '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,则使用一个停止位来指示数据传输的结束。如果 StopBits 是 2,则使用两个停止位来指示数据传输的结束。如果 StopBits 是 1.5,则传输停止位的时间是正常传输一个位所需时间的 150%。
注意
计算机和外围设备都必须配置为传输相同的停止位数。
可能值的汇总:
| 默认值。发送一个停止位以指示字节的结束。 |
| 传输停止位的时间是正常传输一个位所需时间的 150%。 |
| 发送两个停止位以指示字节的结束。 |
除停止位之外,串行数据格式还包括一个开始位、5 到 8 个数据位以及可能存在的一个奇偶校验位。使用 DataBits 属性指定数据位数,并使用 Parity 属性指定奇偶校验检查的类型。
使用以下语法创建串行对象后,还可以设置 StopBits 属性:
s.StopBits = 2;
示例: s = serial('COM1','StopBits',2);
数据类型: double
终止符字符,指定为逗号分隔的对组,其中包含 '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 属性。
能够与设备通信之前,必须使用 函数将设备连接到 fopenobj。已连接的串行端口对象的 open 属性值为 Status。如果尝试在该对象未连接到设备时执行读取或写入操作,将会返回错误。只能将一个串行端口对象连接到给定的串行端口。
版本历史记录
在 R2006a 之前推出在以后的版本中将会删除 serial。请改用 serialport。
以下示例说明如何使用推荐功能连接到串行端口。
| 功能 | 请改用以下项 |
|---|---|
s = serial("COM1");
s.BaudRate = 115200;
fopen(s) | s = serialport("COM1",115200); |
推荐的接口具有额外的功能和改进的性能。有关使用推荐功能的详细信息,请参阅Transition Your Code to serialport Interface。
serial 函数运行而没有发出警告,但代码分析器指示将在以后的版本中删除 serial。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)