Main Content

serial 属性

(将删除)访问串行属性

不推荐使用 serial 及其对象属性。请改用 serialport 及其属性。请参阅 兼容性考虑

串行属性用于使用 serial 对象配置通信和配置读写行为。

使用 serial 函数在对象创建期间可以设置一些属性。有关这些属性的信息,请参阅 serial 参考页,其中包括 PortBaudRateByteOrderDataBitsParityStopBitsTerminator

通信属性用于设置数据位传输设置。读取和写入属性用于配置读取和写入数据所涉及的因素,例如设置完成操作的超时。使用回调属性从事件中执行回调函数。使用控制引脚属性配置控制引脚的状态和数据流控制。使用记录属性来设置和控制将信息记录到磁盘。

注意

针对所有这些属性的以下示例语法假定您已创建串行对象 s。许多属性只能在对对象调用 fopen 之前设置。有些可以在对象打开时更改。

创建 serial 对象后,可以设置属性。只读属性的调用如下:

s = serial('COM1');
s.TransferStatus
ans = 
     idle

您可以配置的属性设置如下:

s = serial('COM1');
s.Timeout = 30;

常规属性

全部展开

串行端口对象的描述性名称,指定为字符向量或字符串。当您创建串行端口对象时,描述性名称会自动生成并存储在 Name 中。此名称是通过将“Serial”一词与 serial 函数中指定的串行端口串联起来而给出的。但是,您可以随时更改 Name 的值。

串行端口由 Port 属性提供。如果您修改此属性值,则 Name 会自动更新以反映该更改。

示例: s.Name = 'MySerialDevice';

数据类型: char | string

此 属性 为只读。

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

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

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

示例: s.Port

数据类型: char | string

与串行端口对象相关联的标签,指定为字符向量或字符串。Tag 唯一标识串行端口对象。Tag 在构造程序时特别有用,否则需要将串行端口对象定义为全局变量,或者将该对象作为参数在回调例程之间传递。

通过指定 Tag 属性值,可以使用 instrfind 函数返回串行端口对象。

示例: s.Tag = 'MySerialObj';

数据类型: char | string

此 属性 为只读。

对象类型,指定为 serial。使用 serial 函数创建串行端口对象后,会自动定义 TypeType 值始终为 serial

示例: s.Type

数据类型: char | string

要与串行端口对象关联的数据,指定为 MATLAB 数组。UserData 可用于配置要存储的与串行端口对象关联的数据。该对象不直接使用此数据,但您可以使用 get 函数或圆点表示法来访问它。

控制对串行端口对象的访问,指定为 'on''off'。它为应用程序开发人员提供一种防止最终用户访问其应用程序创建的串行端口对象的方法。当对象的 ObjectVisibility 属性设置为 'off' 时,instrfind 不会返回或删除该对象。

不可见的对象仍然有效。如果您可以访问该对象(例如,从创建该对象的文件中访问),您可以设置和获取它的属性,并将其传递给对串行端口对象进行操作的任何函数。

示例: s.ObjectVisibility = 'off';

数据类型: char | string

通信属性

全部展开

设备的字节顺序,指定为 littleEndianbigEndian。如果 ByteOrderlittleEndian,则设备将第一个字节存储在第一个内存地址中。如果 ByteOrderbigEndian,则设备将最后一个字节存储在第一个内存地址中。

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

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

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

s.ByteOrder = 'bigEndian';

注意

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

示例: s.ByteOrder = 'bigEndian';

数据类型: char | string

位传输速率,指定为双精度值。您将波特率配置为位/秒。传输的位包括开始位、数据位、奇偶校验位(如果用到)和停止位。但是,存储的位只有数据位。

波特率是指通信信道中传输信息的速率。在串行端口环境中,“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.BaudRate = 4800;

数据类型: double

要传输的数据位数,指定为 5678。数据以包含五、六、七或八个位的一个系列进行传输,最低有效位先发送。传输 ASCII 字符至少需要 7 个数据位。传输二进制数据需要 8 个位。五位和六位数据格式用于专用通信设备。

注意

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

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

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

s.DataBits = 7;

示例: s.DataBits = 7;

数据类型: double

奇偶校验检查的类型,指定为 noneoddevenmarkspace

'none'

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

'odd'

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

'even'

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

'mark'

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

'space'

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

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

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

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

s.Parity = 'even';

示例: s.Parity = 'even';

数据类型: char | string

用于指示字节结尾的位数,指定为 11.52。如果 StopBits1,则使用一个停止位来指示数据传输的结束。如果 StopBits2,则使用两个停止位来指示数据传输的结束。如果 StopBits1.5,则传输停止位的时间是正常传输一个位所需时间的 150%。

注意

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

可能值的汇总:

1

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

1.5

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

2

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

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

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

s.StopBits = 2;

示例: s.StopBits = 2;

数据类型: double

终止符字符,指定为字符串或元胞数组。可以将 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.Terminator = 'CR';

数据类型: char | string | cell

读取和写入属性

全部展开

此 属性 为只读。

输入缓冲区中可用的字节数,指定为双精度值。此只读属性指示当前可从输入缓冲区读取的字节数。随着输入缓冲区逐渐填满,属性值会不断更新,并在发出 fopen 函数后设置为 0

仅在异步读取数据时才能使用 BytesAvailable。这是因为同步读取数据时,仅在输入缓冲区为空后,控制权才会返回给 MATLAB® 命令行。因此,BytesAvailable 值始终为 0。

BytesAvailable 值的范围是零到输入缓冲区的大小。使用 InputBufferSize 属性指定输入缓冲区的大小。使用 ValuesReceived 属性返回读取的值的总数。

示例: s.BytesAvailable

数据类型: double

输入缓冲区的大小(以字节为单位),指定为双精度值。将 InputBufferSize 配置为读取操作期间输入缓冲区中可存储的总字节数。

如果存储在输入缓冲区中的数据量达到 InputBufferSize 值,则终止读取操作。您可以使用 fgetlfgetfscanf 函数读取文本数据。您可以使用 fread 函数读取二进制数据。

仅当串行端口对象与设备断开连接时,才能配置 InputBufferSize。您可以在调用 fopen 函数之前对其进行配置。使用 fclose 函数来断开与对象的连接。断开连接的对象的 Status 属性值为 closed

如果在输入缓冲区中有数据时配置 InputBufferSize,则会清除该数据。

示例: s.InputBufferSize = 768;

数据类型: double

指定异步读取操作为连续操作还是手动操作,指定为 'manual''continuous'。如果 ReadAsyncModecontinuous,则串行端口对象会持续查询设备,以确定数据是否可用于读取。如果数据可用,则会自动读取数据并存储在输入缓冲区中。如果发出,则忽略 readasync 函数。

如果 ReadAsyncModemanual,则对象不会查询设备以确定数据是否可用于读取。此时,您必须手动发出 readasync 函数以执行异步读取操作。由于 readasync 会检查终止符,因此函数执行速度可能较慢。要提高速度,请将 ReadAsyncMode 配置为 continuous

注意

如果设备已准备好传输数据,则无论 ReadAsyncMode 值如何,都将执行此操作。因此,如果 ReadAsyncModemanual 且读取操作未在进行中,则数据可能会丢失。要保证所有传输的数据都存储在输入缓冲区中,应将 ReadAsyncMode 配置为 continuous

要确定输入缓冲区中可用的数据量,请使用 BytesAvailable 属性。对于任一 ReadAsyncMode 值,您可以使用某个同步读取函数将数据传送到 MATLAB 工作区,例如 fscanffgetlfgetsfread

示例: s.ReadAsyncMode = 'manual';

数据类型: char | string

完成读取或写入操作的等待时间,指定为双精度值。将 Timeout 配置为完成读取或写入操作的最长等待时间(以秒为单位)。如果未指定其他值,则使用默认值 10 秒。超时值向上舍入到完整秒。

如果发生超时,读取或写入操作即终止。此外,如果在异步读取或写入操作期间发生超时,则:

  • 生成错误事件。

  • 执行为 ErrorFcn 指定的回调函数。

示例: s.Timeout = 30;

数据类型: double

此 属性 为只读。

异步读取或写入操作的状态,指定为 idlereadwriteread&write。此只读属性指示是否正在进行异步读取或写入操作。如果 TransferStatusidle,则当前没有进行异步读取或写入操作。如果是 read,则正在进行异步读取操作。如果是 write,则正在进行异步写入操作。如果 TransferStatusread&write,则异步读取和异步写入操作都在进行中。

您可以使用 fprintffwrite 函数以异步方式写入数据。您可以使用 readasync 函数或通过将 ReadAsyncMode 属性配置为 continuous 来以异步方式读取数据。当 readasync 正在执行时,TransferStatus 可能表示即使数据未填充输入缓冲区,也正在读取数据。如果 ReadAsyncModecontinuous,则 TransferStatus 表示仅在数据填充输入缓冲区时才读取数据。

您可以同时执行异步读取和异步写入操作,因为串行端口具有单独的读取和写入引脚。

可能值的汇总:

{idle}

没有正在进行的异步操作。

read

正在进行异步读取操作。

write

正在进行异步写入操作。

read&write

正在进行异步读取和写入操作。

示例: s.TransferStatus

数据类型: char | string

此 属性 为只读。

从设备读取的值的总数,指定为双精度值。这是只读属性,该值在每次成功读取操作后更新,并在发出 fopen 函数后设置为 0。如果从设备读取到终止符,则此值由 ValuesReceived 反映。

如果要异步读取数据,请使用 BytesAvailable 属性返回输入缓冲区中当前可用的字节数。

执行读取操作时,接收的数据由值(而不是字节)表示。一个值由一个或多个字节组成。例如,一个 uint32 值由四个字节组成。

例如,创建一个与串行端口 COM1 关联的串行端口对象,然后打开连接。

s = serial('COM1');
fopen(s)

如果编写 RS232? 命令,并使用 fscanf 读回响应,则 ValuesReceived17,因为仪器配置为发送 LF 终止符。

fprintf(s,'RS232?')
out = fscanf(s)
out =
9600;0;0;NONE;LF
s.ValuesReceived
ans =
    17

示例: s.ValuesReceived

数据类型: double

此 属性 为只读。

当前在输出缓冲区中的字节数,指定为双精度值。此只读属性指示当前在输出缓冲区中等待写入设备的字节数。随着输出缓冲区逐渐填满和清空,属性值会不断更新,并在发出 fopen 函数后设置为 0

仅在异步写入数据时才能使用 BytesToOutput。这是因为同步写入数据时,仅在输出缓冲区为空后,控制权才会返回给 MATLAB 命令行。因此,BytesToOutput 值始终为 0

使用 ValuesSent 属性可返回写入设备的值的总数。

注意

如果您尝试输出的数据量超过了输出缓冲区可以容纳的数据量,则将返回错误并且 BytesToOutput0。使用 OutputBufferSize 属性指定输出缓冲区的大小。

示例: s.BytesToOutput

数据类型: double

输出缓冲区的大小(以字节为单位),指定为双精度值。将 OutputBufferSize 配置为写入期间输出缓冲区中可存储的总字节数。

仅当串行端口对象与设备断开连接时,才能配置 OutputBufferSize。您可以在调用 fopen 函数之前对其进行配置。使用 fclose 函数来断开与对象的连接。断开连接的对象的 Status 属性值为 closed

如果输出缓冲区无法容纳要写入的所有数据,将出现错误。使用 fprintf 函数写入文本数据。使用 fwrite 函数写入二进制数据。

示例: s.OutputBufferSize = 256;

数据类型: double

此 属性 为只读。

写入设备的值的总数,指定为双精度值。这是只读属性,该值在每次成功写入操作后更新,并在发出 fopen 函数后设置为 0。如果在写入终止符,ValuesSent 会反映此值。

如果在异步写入数据,请使用 BytesToOutput 属性返回当前输出缓冲区中的字节数。

执行写入操作时,传输的数据由值(而不是字节)表示。一个值由一个或多个字节组成。例如,一个 uint32 值由四个字节组成。

例如,创建一个与串行端口 COM1 关联的串行端口对象,然后打开连接。

s = serial('COM1');
fopen(s)

如果使用 fprintf 函数写入 *IDN? 命令,则 ValuesSent6,因为默认数据格式为 %s\n,并会写入终止符。

fprintf(s,'*IDN?')
s.ValuesSent
ans =
    6

示例: s.ValuesSent

数据类型: double

此 属性 为只读。

串行端口设备连接的状态,返回为 closedopen。此只读属性指示串行端口对象是否连接到设备。如果 Statusclosed,则串行端口对象未连接到设备。如果 Statusopen,则串行端口对象已连接到设备。

要写入或读取数据,必须先使用 fopen 函数将串行端口对象连接到设备。要断开串行端口对象与设备的连接,请使用 fclose 函数。

示例: s.Status

数据类型: char | string

回调属性

全部展开

中断事件发生时运行的回调函数,指定为函数句柄。当接收的数据处于断开 (空号) 状态的时间超过一个字节的传输时间时,串行端口会产生断点中断事件。

注意

在串行端口会话期间,可能随时产生断点中断事件。

如果 RecordStatus 属性值为 on,并且发生了断点中断事件,则记录文件会记录以下信息:

  • 事件类型为 BreakInterrupt

  • 事件发生的时间,格式为 day-month-year hour:minute:second:millisecond

数据类型: function_handle

发生字节可用事件时运行的回调函数,指定为函数句柄。当由 BytesAvailableFcnCount 属性指定的字节数在输入缓冲区中可用时,或者在读取到终止符后(具体由 BytesAvailableFcnMode 属性确定),会发生字节可用事件。

注意

字节可用事件仅针对异步读取操作生成。

如果 RecordStatus 属性值为 on,并且发生了字节可用事件,则记录文件会记录以下信息:

  • 事件类型为 BytesAvailable

  • 事件发生的时间,格式为 day-month-year hour:minute:second:millisecond

注意

您无法使用超过 127 个字符的 ASCII 值。函数仅限于 127 个二进制字符。

示例: s.BytesAvailableFcn = @instrcallback;

数据类型: function_handle

生成字节可用事件时输入缓冲区中必须可用的字节数,指定为数值。

BytesAvailableFcnMode 属性可用于指定字节可用事件是在可用字节达到一定数量后发生,还是在读取到终止符后发生。

字节可用事件执行为 BytesAvailableFcn 属性指定的回调函数。

仅当对象与设备断开连接时,才能配置 BytesAvailableFcnCount。使用 fclose 函数来断开与对象的连接。断开连接的对象的 Status 属性值为 closed

示例: s.BytesAvailableFcnCount = 40;

数据类型: double

用于生成字节可用事件的字节可用函数的类型,指定为 'terminator''byte'。如果 BytesAvailableFcnMode'terminator',则在到达 Terminator 属性指定的终止符时,会发生字节可用事件。如果 BytesAvailableFcnMode'byte',则在 BytesAvailableFcnCount 属性指定的字节数可用时,会发生字节可用事件。

字节可用事件执行为 BytesAvailableFcn 属性指定的回调函数。

仅当对象与设备断开连接时,才能配置 BytesAvailableFcnMode。使用 fclose 函数来断开与对象的连接。断开连接的对象的 Status 属性值为 closed

示例: s.BytesAvailableFcnMode = 'byte';

数据类型: char | string

发生错误事件时运行的回调函数,指定为函数句柄。

注意

错误事件仅针对异步读写操作生成。

发生超时也会生成错误事件。如果读取或写入操作未在 Timeout 属性指定的时间内成功完成,则会发生超时。配置错误(如设置了无效属性值)不会生成错误事件。

如果 RecordStatus 属性值为 on,并且发生了错误事件,则记录文件会记录以下信息:

  • 事件类型为 Error

  • 错误消息

  • 事件发生的时间,格式为 day-month-year hour:minute:second:millisecond

数据类型: function_handle

发生输出为空事件时执行的回调函数,指定为函数句柄。当最后一个字节从输出缓冲区发送到设备时,发生输出为空事件。

注意

输出为空事件仅针对异步写入操作生成。

如果 RecordStatus 属性值为 on,并且发生了输出为空事件,则记录文件会记录以下信息:

  • 事件类型为 OutputEmpty

  • 事件发生的时间,格式为 day-month-year hour:minute:second:millisecond

数据类型: function_handle

发生引脚状态事件时运行的回调函数,指定为函数句柄。当载波检测 (CD)、允许发送 (CTS)、数据设备就绪 (DSR) 或振铃指示器 (RI) 引脚更改状态时,会发生引脚状态事件。串行端口引脚在被使能或禁能时会更改状态。关于这些引脚状态的信息记录在 PinStatus 属性中。

注意

在串行端口会话期间,可能随时生成引脚状态事件。

如果 RecordStatus 属性值为 on,并且发生了引脚状态事件,则记录文件会记录以下信息:

  • 事件类型为 PinStatus

  • 更改了其状态的引脚,引脚状态为 onoff

  • 事件发生的时间,格式为 day-month-year hour:minute:second:millisecond

数据类型: function_handle

发生计时器事件时运行的回调函数,指定为函数句柄。在经过由 TimerPeriod 属性指定的时间后,会发生计时器事件。时间是从使用 fopen 将串行端口对象连接到设备时开始测量的。

注意

在串行端口会话期间,可能随时生成计时器事件。

如果 RecordStatus 属性值为 on,并且发生了计时器事件,则记录文件会记录以下信息:

  • 事件类型为 Timer

  • 事件发生的时间,格式为 day-month-year hour:minute:second:millisecond

如果系统速度明显变慢或者 TimerPeriod 值太小,可能不会处理某些计时器事件。

数据类型: function_handle

计时器事件之间的时间段,指定为数值,以秒为单位。它是在调用为 TimerFcn 指定的回调函数之前必须经过的时间。时间是从使用 fopen 将串行端口对象连接到设备时开始测量的。

如果系统速度明显变慢或者 TimerPeriod 值太小,可能不会处理某些计时器事件。

数据类型: double

控制引脚属性

全部展开

DTR 引脚的状态,指定为 onoff。如果 DataTerminalReadyon,则数据终端就绪 (DTR) 引脚处于使能状态。如果 DataTerminalReadyoff,则 DTR 引脚处于禁能状态。

在正常使用中,DTR 和数据设备就绪 (DSR) 引脚协作工作,用于指示设备是否已连接并通电。但是,RS-232 标准中没有规定必须以任何特定方式使用 DTR 引脚。例如,DTR 和 DSR 可能用于握手。您应参阅设备文档以确定其具体引脚行为。

您可以使用 PinStatus 属性返回 DSR 引脚的值。

示例: s.DataTerminalReady = 'off';

数据类型: char | string

数据流控制方法,指定为 nonehardwaresoftware。如果 FlowControlnone,则不使用数据流控制(握手)。如果 FlowControlhardware,则使用硬件握手来控制数据流。如果 FlowControlsoftware,则使用软件握手来控制数据流。

硬件握手通常利用请求发送 (RTS) 和允许发送 (CTS) 引脚来控制数据流。软件握手使用控制字符(Xon 和 Xoff)来控制数据流。

您可以使用 PinStatus 属性返回 CTS 引脚的值。您可以使用 RequestToSend 属性指定 RTS 引脚的值。但是,如果 FlowControlhardware,并且您为 RequestToSend 指定值,则可能不支持该值。

注意

虽然您可以同时为硬件握手和软件握手配置设备,但 MATLAB 不支持此行为。

示例: s.FlowControl = 'hardware';

数据类型: char | string

此 属性 为只读。

CD、CTS、DSR 和 RI 引脚的状态,以结构体形式返回。此只读属性返回一个结构体数组,其中包含字段 CarrierDetectClearToSendDataSetReadyRingIndicator。这些字段分别指示载波检测 (CD)、允许发送 (CTS)、数据设备就绪 (DSR) 和振铃指示器 (RI) 引脚的状态。

对于任何这些字段,PinStatus 可以是 onoff。值为 on 表示关联的引脚处于使能状态。值为 off 表示关联的引脚处于禁能状态。当其中任一引脚更改其状态时,就会发生引脚状态事件。引脚状态事件执行 PinStatusFcn 指定的回调函数。

在正常使用中,数据终端就绪 (DTR) 和 DSR 引脚协作工作,而请求发送 (RTS) 和 CTS 引脚协作工作。您可以使用 DataTerminalReady 属性指定 DTR 引脚的状态。您可以使用 RequestToSend 属性指定 RTS 引脚的状态。

示例: s.PinStatus

数据类型: struct

RTS 引脚的状态,指定为 onoff。如果 RequestToSendon,则请求发送 (RTS) 引脚处于使能状态。如果 RequestToSendoff,则 RTS 引脚处于禁能状态。

在正常使用中,RTS 和允许发送 (CTS) 引脚协作工作,并用作数据传输的标准握手引脚。在这种情况下,RTS 和 CTS 由 DTE 和 DCE 自动管理。但是,RS-232 标准中没有要求必须以任何特定方式使用 RTS 引脚。因此,如果手动配置 RequestToSend 值,则可能是非标准操作。

如果您的设备未以标准方式使用硬件握手,并且您需要手动配置 RequestToSend,请将 FlowControl 属性配置为 none。否则,可能不支持您指定的 RequestToSend 值。请参阅您的设备文档以确定其具体引脚行为。

您可以使用 PinStatus 属性返回 CTS 引脚的值。

示例: s.RequestToSend = 'off';

数据类型: char | string

记录属性

全部展开

保存到记录文件的信息的详细级别,指定为 compactverbose。如果 RecordDetailcompact,则写入设备的值的数量、从设备读取的值的数量、值的数据类型和事件信息都保存到记录文件中。如果 RecordDetailverbose,则写入设备的数据和从设备读取的数据也会保存到记录文件中。

可能值的汇总:

{compact}

写入设备的值的数量、从设备读取的值的数量、值的数据类型和事件信息都保存到记录文件中。

verbose

写入设备的数据和从设备读取的数据也会保存到记录文件中。

示例: s.RecordDetail = 'verbose';

数据类型: char | string

在记录文件中保存数据和事件信息的方法,指定为 overwriteappendindex。如果 RecordModeoverwrite,则每次启动记录时都会覆盖记录文件。如果 RecordModeappend,则每次启动记录时都会将数据追加到记录文件中。如果 RecordModeindex,则每次启动记录时都会创建一个不同记录文件,每个记录文件都具有索引文件名。

仅当对象未在记录时才能配置 RecordMode。使用 record 函数终止记录。未记录的对象的 RecordStatus 属性值为 off

使用 RecordName 属性指定记录文件名。索引文件名遵循一组规定的规则。

可能值的汇总:

{overwrite}

覆盖记录文件。

append

数据将追加到现有记录文件中。

index

创建不同记录文件,每个文件都有索引文件名。

例如,使用记录属性记录串行数据。创建串行端口对象并打开连接。

s = serial('COM1');
fopen(s)

使用 RecordName 属性指定记录文件名,将 RecordMode 配置为 index,然后启动记录。

s.RecordName = 'MyRecord.txt';
s.RecordMode = 'index';
record(s)

在关闭记录后,记录文件名将使用索引文件名自动更新。

record(s,'off')
s.RecordName
ans =
MyRecord01.txt

断开 s 与外围设备的连接,从内存中删除 s,然后从 MATLAB 工作区中删除 s

fclose(s)
delete(s)
clear s

示例: s.RecordMode = 'index';

数据类型: char | string

记录文件的名称,指定为字符串。您可以为 RecordName 指定任何值 - 包括目录路径 - 前提是操作系统支持文件名。

默认记录文件名为 record.txt,如果您记录数据文件但未指定其他名称,则使用该文件名。

MATLAB 支持操作系统支持的任何文件名。您可以使用 type 函数访问该文件。例如,如果将记录文件命名为 MyRecord.txt,要在 MATLAB 命令行中键入此文件,请输入:

type('MyRecord.txt')

您可以使用 RecordMode 属性指定数据和事件信息是保存到一个磁盘文件还是多个磁盘文件。如果 RecordModeindex,则文件名遵循一组规定的规则。

仅当对象未在记录时才能配置 RecordName。使用 record 函数终止记录。未记录的对象的 RecordStatus 属性值为 off

示例: s.RecordName = 'MonthlyDataFile_April';

数据类型: char | string

此 属性 为只读。

记录串行数据和事件信息的状态,返回为 onoff。此只读属性指示记录是打开还是关闭,由 record 函数控制。如果 RecordStatusoff,则数据和事件信息不会保存到记录文件中。如果 RecordStatuson,则数据和事件信息将保存到 RecordName 指定的记录文件中。

使用 record 函数启动或完成记录。RecordStatus 自动配置为反映记录状态。

示例: s.RecordStatus

数据类型: char | string

版本历史记录

在 R2006a 之前推出

全部折叠

R2021a: serial 对象接口将被删除

不推荐使用 serial 及其对象属性。请改用 serialport 及其属性。

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

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

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