主要内容

串行通信管理器

与连接到串行端口的设备通信

自 R2021b 起

说明

串行通信管理器创建与您计算机上的串行端口的连接。在连接到串行端口后,您可以与之通信,绘制和分析数据,将数据导出到工作区,并生成 MATLAB® 代码。

使用此 App,您可以:

  • 配置串行端口通信属性。

  • 向连接的串行端口发送二进制或字符串数据。

  • 读取从连接的串行端口发送的二进制或字符串数据。

  • 在图窗窗口中绘制数据。

  • 通过在信号分析器中查看数据来分析数据。

  • 将数据导出到工作区。

  • 生成使用 serialport 接口的 MATLAB 实时脚本文件。

Serial Explorer app

打开 串行通信管理器 App

  • MATLAB 工具条:在 App 选项卡的测试和测量下,点击 App 图标。

  • MATLAB 命令提示符:输入 serialExplorer

示例

全部展开

在此示例中,向串行端口设备写入以 ASCII 字符结尾的数据并从其读回数据。此示例中的设备是 Arduino® Uno,已使用自定义命令和响应对其进行编程。

从 MATLAB 工具条的 App 选项卡或 MATLAB 命令提示符打开串行通信管理器

选择您要与之通信的串行端口设备。在此示例中,设备连接到 COM4。

Serial Explorer app showing device selection.

属性检查器配置连接通信属性。在写入和读取数据之前指定这些设备属性,以匹配所连接设备的适当值。对于此示例,将波特率更改为 38400

Serial Explorer app showing Property Inspector.

某些串行端口设备可以接受字符串查询并对其做出响应。在此示例中,连接的 Arduino Uno 已编程为接收和响应自定义字符串命令。此示例中的命令不适用于其他设备。

向设备发送 Send Status? 命令。在写入部分中,将数据格式设置为以 ASCII 字符结尾的字符串数据类型更改为字符串,因为这是唯一可能的选项。将要写入的数据指定为 Send Status?。点击写入以将数据写入串行端口设备。对于以 ASCII 字符结尾的字符串写入操作,由终止符属性指定的写入终止符会自动追加到正在写入的数据。

Serial Explorer app Write section for ASCII data.

您可以通过从串行端口设备读取来查看对此命令的响应。在读取部分中,将数据格式设置为以 ASCII 字符结尾的字符串,这会将数据类型更改为字符串。通过点击读取从设备读取数据。一直读取数据,直到首次出现终止符。

Serial Explorer app Read section for ASCII data.

通信日志窗格中查看写入和读取操作。读取操作显示消息 Arduino connected to 'COM4'(连接到 'COM4' 的 Arduino)。您可以选择一个行,按照从通信日志导出数据并生成 MATLAB 脚本中的步骤将其作为变量导出到工作区。

Serial Explorer app Communication Log pane.

MATLAB 代码日志窗格显示这些操作的代码。您可以按照从通信日志导出数据并生成 MATLAB 脚本中的步骤将以下代码导出为 MATLAB 实时脚本文件。

Serial Explorer app MATLAB Code Log pane.

在此示例中,向串行端口设备写入以 ASCII 字符结尾的数据并从其读回数据。此示例中的设备是 Arduino Uno,已使用自定义命令和响应对其进行编程。

从 MATLAB 工具条的 App 选项卡或 MATLAB 命令提示符打开串行通信管理器

选择您要与之通信的串行端口设备。在此示例中,设备连接到 COM4。

Serial Explorer app showing device selection.

属性检查器配置连接通信属性。在写入和读取数据之前指定这些设备属性,以匹配所连接设备的适当值。对于此示例,将波特率更改为 38400

Serial Explorer app showing Property Inspector.

某些串行端口设备可以接受字符串查询并对其做出响应。在此示例中,连接的 Arduino Uno 已编程为接收和响应自定义字符串命令。此示例中的命令不适用于其他设备。

向设备发送 Send Sine-Wave Data 命令。在写入部分中,将数据格式设置为以 ASCII 字符结尾的字符串数据类型更改为字符串,因为这是唯一可能的选项。将要写入的数据指定为 Send Sine-Wave Data。点击写入以将数据写入串行端口设备。对于以 ASCII 字符结尾的字符串写入操作,由终止符属性指定的写入终止符会自动追加到正在写入的数据。

Serial Explorer app Write section for ASCII data.

向设备发送另一条命令。在 MATLAB 命令提示符下,为此命令创建一个工作区变量。

command = "Send Arbitrary Waveform";

选择工作区变量并选择 command 选项。点击写入

Serial Explorer app Write section for ASCII data.

在从串行端口设备读取数据之前,您必须指定正确的数据格式和类型。在此示例中,对字符串命令的响应以单精度二进制数据形式存储。在读取部分中,将数据格式设置为二进制,并将数据类型设置为单精度可用的值数目参数为 300。前 100 个值是对 Send Sine-Wave Data 命令的响应,其余 200 个值是对 Send Arbitrary Waveform 命令的响应。

要读取的值数目指定为 100。通过点击读取从串行端口设备读取前 100 个数据值。

Serial Explorer app Read section for binary data.

如果您没有为要读取的值数目参数指定值,则可以读取所有可用值。通过清除要读取的值数目参数并点击读取来读取其余 200 个值。

Serial Explorer app Read section for binary data.

通信日志窗格中查看写入和读取操作。您可以选择一行来对其绘图,在信号分析器中查看它,或将其作为变量导出到工作区。选择从第一次读取操作得到的数据。

Serial Explorer app Communication Log pane.

点击分析部分中的绘图

Serial Explorer plot button.

将打开一个具有数据图的新图窗窗口。您可以从命令行窗口修改绘图和图窗。

选择另一个响应数据并再次点击绘图。将打开另一个具有数据图的新图窗窗口。

MATLAB 代码日志窗格将显示这些操作的代码(绘图创建除外)。您可以按照从通信日志导出数据并生成 MATLAB 脚本中的步骤将以下代码导出为 MATLAB 实时脚本文件。

Serial Explorer app MATLAB Code Log pane.

在此示例中,在新图窗窗口中绘制通信日志中的一行数据。您可以绘制在串行端口中写入或读取的任何数值数据。

通信日志捕获您在连接的串行端口中写入或读取的所有数据。

选择一行数据。

Serial Explorer Communication Log pane with row selected.

点击分析部分中的绘图

Serial Explorer plot button.

将打开一个具有数据图的新图窗窗口。您可以从命令行窗口修改绘图和图窗。

MATLAB figure window showing a plot of the selected row of data.

在此示例中,使用用于导出数据和 App 交互的不同选项。

通信日志捕获您在连接的串行端口中写入或读取的所有数据。

选择一行数据。

Serial Explorer app Communication Log pane.

将此行数据作为在工作区变量中指定的变量导出到工作区。该 App 提供默认变量名称,但您可以编辑它。更改变量名称,点击导出,然后选择导出所选行选项。

Serial Explorer app showing Export Selected Row option.

您也可以将整个通信日志作为 timetable 导出到工作区。更改变量名称,点击导出,然后选择导出通信日志选项。

Serial Explorer app showing Export Communication Log option.

除了导出数据之外,您还可以从 MATLAB 代码日志窗格导出代码。此窗格包含您在 App 中所做的所有 serialport 对象创建、写入、读取和属性配置操作。

Serial Explorer app MATLAB Code Log pane.

点击导出并选择生成 MATLAB 脚本选项,生成 MATLAB 实时脚本文件并在实时编辑器中打开它。

Serial Explorer app showing Generate MATLAB Script option.

打开实时脚本文件后,您可以修改代码以满足您的需要并保存文件。

参数

全部展开

“写入”部分

您可以向串行端口写入二进制以 ASCII 字符结尾的字符串数据。

二进制写入等效于 write 函数,以 ASCII 字符结尾的字符串写入等效于 writeline 函数。

指定要写入串行端口的数据的数据类型。此参数确定对每个值要写入的字节数以及如何将这些字节解释为 MATLAB 数据类型。

依赖关系

如果将数据格式设置为以 ASCII 字符结尾的字符串,则此参数唯一可能的值是字符串

仅当您选择工作区变量选项而不是要写入的数据时,此参数才可以设置为 uint64int64

指定要写入串行端口的数据。无论此参数中的格式如何,数据都以数据类型指定的类型写入。

选择此参数或工作区变量来写入数据。

选择一个现有工作区变量以写入串行端口。无论工作区中变量的数据类型如何,数据都以数据类型指定的类型写入。

如果数据格式二进制,您可以选择以下类型的工作区变量:

  • 数值的行向量 (1×N) 或列向量 (N×1)

  • N 字符向量

  • 1×1 字符串标量

如果数据格式以 ASCII 字符结尾的字符串,您可以选择以下类型的工作区变量:

  • N 字符向量

  • 1×1 字符串标量

选择此参数或要写入的数据来写入数据。

点击此按钮可将要写入的数据工作区变量中指定的数据作为指定的数据类型写入串行端口。如果数据格式以 ASCII 字符结尾的字符串,则由 Terminator 属性指定的写入终止符会自动追加到正在写入的数据。

此按钮等效于执行 writewriteline 函数。

“读取”部分

从串行端口读取二进制以 ASCII 字符结尾的字符串数据。二进制读取等效于 read 函数,以 ASCII 字符结尾的字符串读取等效于 readline 函数。

指定要从串行端口读取的数据的数据类型。此参数确定对每个值要读取的字节数以及如何将这些字节解释为 MATLAB 数据类型。

依赖关系

如果将数据格式设置为以 ASCII 字符结尾的字符串,则此参数唯一可能的值是字符串

将要读取的值数目指定为正整数。此参数必须小于或等于可用的值数目。如果将此参数留空,App 将使用指定的数据类型从串行端口读取所有可用值。

依赖关系

要启用此参数,请将数据格式设置为二进制

此 参数 为只读。

这是以数据类型指定的格式可读取的值数目。

依赖关系

要启用此参数,请将数据格式设置为二进制

点击此按钮可从串行端口读取数据。如果数据格式二进制,则以数据类型指定的形式读取要读取的值数目指定的值数目。如果数据格式以 ASCII 字符结尾的字符串,则一直读取数据,直到首次出现由 Terminator 属性指定的读取终止符。

此按钮等效于 readreadline 函数。

“通信日志”部分

根据数据类型,以二进制ASCII十六进制查看通信日志数据列中的数据。此参数不会更改数据的原始值或数据类型。有关这些格式的详细信息,请参阅数据类型转换

点击此按钮可清除通信日志的所有内容。

“分析”部分

点击此按钮可打开新图窗窗口,该窗口绘制通信日志中的当前选定数据。您只能选择一行数据,并且选定数据必须为数值类型。

写入读取不同,系统不会在 MATLAB 代码日志窗格中捕获此操作。

点击此按钮可启动信号分析器,并向其发送通信日志中的当前选定数据。您只能选择一行数据,并且选定数据必须为数值向量。

您必须安装 Signal Processing Toolbox™ 才能使用信号分析器

导出部分

编辑您要将数据导出到的工作区变量的名称。导出下拉菜单中的导出所选行导出通信日志选项会将您的数据作为在此字段中指定的变量保存到工作区。

您必须指定有效的 MATLAB 变量名称且该名称在工作区中尚不存在。如果您指定无效名称,它将自动更改为有效变量名称。

点击此按钮可选择以下选项之一以便从此 App 导出数据:

  • 导出所选行 - 将通信日志中当前选定数据作为工作区变量指定的变量保存到工作区。

  • 导出通信日志 - 将所有通信日志数据作为 timetable 保存到工作区,变量名称为工作区变量指定的名称。

  • 生成 MATLAB 脚本 - 生成用 MATLAB 代码日志中的内容填充的 MATLAB 实时脚本文件,并在实时编辑器中打开它。

属性检查器

此 参数 为只读。

连接的串行端口的名称,以字符向量形式返回。

串行接口传输位的速率,以每秒位数为单位。您可以选择可用选项之一或指定您自己的值。

通过串行接口传输的数据位数。

用于指示字节结束的位数。

向串行端口传输的数据中添加的奇偶校验位类型。您可以使用此参数向数据添加奇偶校验位(也称为检查位)。向二进制代码字符串添加奇偶校验位是一种通过确保 1 位的总数为偶数或奇数来检测数据传输中错误的方法。

奇偶校验位的值由给定一组位中 1 的数目确定,设置如下。

奇偶校验位类型奇偶校验位值
如果 1 的个数为偶数如果 1 的个数为奇数
none不设置奇偶校验位不设置奇偶校验位
even01
odd10

管理串行端口数据传输速率的过程。选择 none 表示无流控制,选择 hardware 表示让硬件确定流控制,或选择 software 表示让软件确定流控制。

此 参数 为只读。

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

用于读取和写入以 ASCII 字符结尾的数据的终止符字符,指定为 LFCRCR/LF 或 0 到 255 之间的数字。读取终止符后跟写入终止符,两者之间以逗号分隔。点击垂直省略号图标 Vertical ellipsis icon 可分别指定读取终止符和写入终止符字符值。

字节排列成较大数值的顺序。如果字节顺序为 little-endian,则串行端口将第一个字节存储在第一个内存地址中。如果字节顺序为 big-endian,则串行端口将最后一个字节存储在第一个内存地址中。

配置字节顺序以匹配串行端口的适当值。

允许完成读取操作的时间(以秒为单位),指定为数值。

版本历史记录

在 R2021b 中推出