简介:SupportPackagesR2019a.zip 是面向 MATLAB 2019a 用户的离线硬件支持包,主要解决 Pluto 模块在无网络或网络不稳定环境下难以在线安装的问题,适合从事科学计算、数据采集与硬件交互的科研人员和工程师使用。压缩包共 68 个文件,约 55.58MB,包含 33 个 xml 配置文件、30 个 zip 组件包、2 个 txt 说明文档、2 个 exe 安装程序及 1 个 dlarea 目录标识文件,覆盖安装引导、组件归档与平台适配等环节,结构完整,便于离线部署与版本核对。目前已有 1120 人学习下载,说明该离线方案在特定网络条件下具有实际需求。资源价值在于提供了一套可脱离网络完成 Pluto 支持包安装的完整文件集合,读者可据此在实验室、野外或内网环境中稳定部署硬件支持组件,减少因网络波动导致的安装失败,并为后续调用 Pluto 接口函数、开展数据采集与控制实验提供基础环境保障。
1. 从 SupportPackagesR2019a.zip 说起:一个被低估的离线依赖包
如果你在某个内网环境里装过 MATLAB R2019a,大概率见过这个文件名——SupportPackagesR2019a.zip。它不是一个普通的压缩包,而是 MathWorks 官方为 R2019a 版本打包的硬件支持包集合,里面装着 Arduino、Raspberry Pi、Simulink 硬件连接、嵌入式 Coder 支持等一堆附加组件。问题在于,官方安装器默认走在线下载,内网机器根本连不上,于是这个离线包就成了唯一的救命稻草。
我见过太多人拿到这个 zip 之后直接双击解压,然后对着里面一堆文件夹发呆——不知道哪个是安装入口,不知道要不要联网校验,不知道装完之后为什么arduino命令还是找不到板子。这篇笔记就是把我自己踩过的坑和最终跑通的路径完整拆开,从包结构、离线安装、环境变量配置,到常见报错排查,一步步写清楚。适合两类人:一是需要在无外网环境下部署 MATLAB 硬件支持包的工程师,二是想搞清楚 MathWorks 这套支持包机制到底怎么运作的开发者。
2. 拆开 SupportPackagesR2019a.zip:目录结构与安装入口
2.1 包内到底有什么:三个核心目录
把 zip 解压到一个短路径下(比如D:\SP_R2019a),你会看到类似这样的结构:
SupportPackagesR2019a/ ├── archives/ │ ├── arduino/ │ ├── raspberrypi/ │ ├── simulink_support/ │ └── ... ├── install_support_packages.exe (Windows) ├── install_support_packages.sh (Linux) └── ssi/ └── ...archives目录是核心,每个子文件夹对应一个硬件支持包,里面是已经打包好的.mlpkginstall文件或解压后的文件树。ssi目录是 Support Software Installer 的缩写,存放安装器自身的配置和校验文件。安装入口就是根目录下那个install_support_packages可执行文件或脚本。
注意:不要直接进
archives手动复制文件到 MATLAB 安装目录,这样装出来的支持包缺少注册信息,MATLAB 启动时不会加载。
2.2 离线安装的正确姿势:命令行调用安装器
Windows 下用管理员权限打开 CMD,切到解压目录,执行:
# 进入解压后的根目录 cd /d D:\SP_R2019a\SupportPackagesR2019a # 调用离线安装器,指定 MATLAB 根目录 install_support_packages.exe -matlabroot "C:\Program Files\MATLAB\R2019a" -offlineLinux 下对应:
cd /home/user/SP_R2019a/SupportPackagesR2019a chmod +x install_support_packages.sh ./install_support_packages.sh -matlabroot /usr/local/MATLAB/R2019a -offline这里-matlabroot必须指向你实际安装的 R2019a 根目录,不是 bin 目录。-offline参数告诉安装器不要尝试联网校验,直接使用本地archives里的文件。如果你不加这个参数,安装器会先尝试连接 MathWorks 服务器,内网环境下会卡住直到超时。
安装器启动后会弹出一个图形界面(Linux 下需要 X11 转发或本地桌面),列出所有可安装的支持包。勾选你需要的,点安装。整个过程不需要网络,但耗时取决于包的数量,Arduino 和 Raspberry Pi 两个包加起来大概 5 到 10 分钟。
2.3 安装后的验证:确认支持包被正确注册
安装完成后,不要急着插板子。先打开 MATLAB,执行:
% 列出已安装的硬件支持包 matlab.addons.installedAddons % 检查 Arduino 支持包是否在列 ver('arduino')如果installedAddons返回的表格里能看到对应的包名和版本号,说明注册成功。如果ver('arduino')报错说找不到,那多半是安装时-matlabroot指错了,或者安装器没有写入注册文件。注册文件通常在matlabroot/toolbox/local/下的某个.mat或.xml里,可以手动检查时间戳确认是否被更新。
3. 配置硬件连接:从驱动到 MATLAB 命令的完整链路
3.1 驱动层:Arduino 和 Raspberry Pi 的底层准备
支持包装好了,不代表板子就能用。Arduino 在 Windows 下需要先装好 USB 串口驱动,官方 IDE 安装包里自带,或者单独下载arduino.inf手动安装。装好后在设备管理器里应该能看到Arduino Uno (COMx)这样的条目。Raspberry Pi 则更复杂一些,需要确保板子上跑的是官方 Raspbian 系统,并且开启了 SSH 和 I2C/SPI 接口。
# 在 Raspberry Pi 上启用 SSH 和 I2C(通过 raspi-config) sudo raspi-config # 选择 Interfacing Options -> SSH -> Enable # 选择 Interfacing Options -> I2C -> Enable # 重启生效 sudo rebootMATLAB 通过 SSH 连接树莓派,所以板子的 IP 地址、用户名、密码必须提前确认。建议在路由器里给树莓派绑定静态 IP,避免每次重启后地址变化导致连接失败。
3.2 MATLAB 侧:用 supportPackageInstaller 做最后配置
虽然离线包已经装好了,但 MATLAB 还需要知道板子的具体连接参数。在 MATLAB 命令窗口执行:
% 打开硬件支持包配置界面 supportPackageInstaller这个命令会打开一个向导,让你选择板子类型、端口、波特率等。对于 Arduino Uno,波特率通常选 115200,端口选设备管理器里看到的 COM 口。对于 Raspberry Pi,需要填 IP 地址、用户名(默认 pi)、密码(默认 raspberry,如果你没改过)。
配置完成后,MATLAB 会在~/MATLAB/SupportPackages/R2019a/下生成一个配置文件,记录这些参数。下次连接时直接调用arduino()或raspi()函数即可。
3.3 最小验证:点亮一颗 LED
不要一上来就跑复杂的 Simulink 模型,先用最简代码确认链路通了:
% 创建 Arduino 对象 a = arduino('COM3', 'Uno', 'Libraries', 'ExampleLCD/ExampleLCD'); % 配置第 13 脚为输出(板载 LED) configurePin(a, 'D13', 'DigitalOutput'); % 点亮 LED writeDigitalPin(a, 'D13', 1); pause(1); writeDigitalPin(a, 'D13', 0); % 清理 clear a;如果 LED 闪了一下,说明从 MATLAB 到板子的整条链路都通了。如果报错Unable to connect to Arduino,先检查 COM 口是否被其他程序占用(比如 Arduino IDE 的串口监视器开着),再检查驱动是否装对。
4. 避坑指南:离线安装 SupportPackagesR2019a.zip 的五个血泪教训
4.1 坑一:解压路径带中文或空格,安装器直接闪退
现象:双击install_support_packages.exe后窗口一闪而过,或者命令行报Invalid path。
原因:MathWorks 的安装器对路径中的非 ASCII 字符和空格处理有问题,尤其是 R2019a 这个较老的版本。
解决:把 zip 解压到纯英文、无空格的短路径下,比如D:\SP_R2019a。不要放在C:\Users\张三\Downloads\这种路径里。
4.2 坑二:-matlabroot 指向了 bin 目录,安装后 MATLAB 找不到包
现象:安装过程看似成功,但 MATLAB 里matlab.addons.installedAddons看不到任何新包。
原因:-matlabroot参数要求的是 MATLAB 的根目录,不是bin目录。很多人习惯性地把路径写到bin那一层。
解决:确认路径结尾是R2019a,而不是R2019a\bin。Windows 默认安装路径通常是C:\Program Files\MATLAB\R2019a。
4.3 坑三:Linux 下没有图形界面,安装器卡在启动阶段
现象:在无桌面的 Linux 服务器上执行install_support_packages.sh,命令挂起,没有任何输出。
原因:安装器默认启动图形界面,没有 X11 环境时它会一直等待。
解决:要么在本地桌面环境跑,要么用xvfb虚拟帧缓冲:
# 安装 xvfb(以 Ubuntu 为例) sudo apt-get install xvfb # 用 xvfb 运行安装器 xvfb-run ./install_support_packages.sh -matlabroot /usr/local/MATLAB/R2019a -offline4.4 坑四:Arduino 板子被 Arduino IDE 占用串口,MATLAB 连不上
现象:MATLAB 报Failed to open serial port COM3。
原因:Arduino IDE 的串口监视器打开时会独占 COM 口,MATLAB 无法同时访问。
解决:关闭 Arduino IDE 的串口监视器,或者直接关掉 IDE。另外,某些蓝牙串口也会占用 COM 口,在设备管理器里确认你选的 COM 口对应的是 Arduino 板子。
4.5 坑五:Raspberry Pi 的 SSH 密钥变更导致连接被拒
现象:之前能连上的树莓派,重新烧录系统后 MATLAB 报Host key verification failed。
原因:树莓派的 SSH 主机密钥变了,但 MATLAB 本地缓存了旧密钥。
解决:删除本地 known_hosts 里对应的条目。在 Linux/macOS 下是~/.ssh/known_hosts,Windows 下是C:\Users\你的用户名\.ssh\known_hosts。找到树莓派 IP 对应的行删掉,重新连接即可。
5. 进阶技巧:批量部署与静默安装的实战参数
如果你需要在多台内网机器上批量部署,图形界面一个个点显然不现实。install_support_packages支持静默安装,关键是构造一个应答文件。
5.1 生成静默安装应答文件
先在一台机器上正常走一遍图形安装,安装器会在临时目录生成一个installer_input.txt。把它拷出来,内容大概长这样:
# 静默安装应答文件示例 destinationFolder=C:\Program Files\MATLAB\R2019a fileInstallationKey=12345-67890-12345-67890 agreeToLicense=yes outputFile=C:\temp\install_log.txt mode=silent product.arduino_support_package=true product.raspberrypi_support_package=true关键参数说明:destinationFolder是 MATLAB 根目录,fileInstallationKey是你的许可证密钥(R2019a 的格式),mode=silent开启静默模式,product.*控制装哪些包。把不需要的包设为false可以缩短安装时间。
5.2 用应答文件批量执行
# Windows 静默安装 install_support_packages.exe -inputFile C:\temp\installer_input.txt -offline # Linux 静默安装 ./install_support_packages.sh -inputFile /tmp/installer_input.txt -offline执行后安装器不会弹任何窗口,日志写到outputFile指定的路径。检查日志里有没有Installation completed successfully字样即可确认成功。
5.3 验证批量部署结果的小脚本
部署完成后,用一段 MATLAB 脚本快速检查所有机器:
% 检查关键支持包是否安装 pkgs = matlab.addons.installedAddons; required = {'Arduino Support Package', 'Raspberry Pi Support Package'}; for i = 1:length(required) idx = find(contains(pkgs.Name, required{i})); if isempty(idx) fprintf('缺失: %s\n', required{i}); else fprintf('已安装: %s (版本 %s)\n', required{i}, pkgs.Version{idx}); end end把这个脚本保存成check_sp.m,在每台机器上跑一遍,输出结果汇总即可。如果某台机器报缺失,大概率是静默安装时destinationFolder写错了,或者许可证密钥不匹配。
5.4 一个容易忽略的细节:安装顺序影响依赖解析
SupportPackagesR2019a.zip 里的包之间有依赖关系。比如 Simulink 的硬件支持包依赖 Arduino 基础包,如果你在应答文件里只勾了 Simulink 包没勾 Arduino 包,安装器会报依赖错误然后中止。稳妥的做法是:要么全勾,要么按archives目录里的依赖清单顺序勾选。依赖清单通常在ssi/dependencies.xml里,用文本编辑器打开就能看到每个包的requires字段。
我自己习惯在批量部署前先在一台样机上完整跑一遍,把installer_input.txt里的product.*列表和实际安装结果对一遍,确认没有漏勾的依赖。这个习惯帮我省过好几次半夜被叫起来排查的麻烦。希望帮到你。
本文还有配套的精品资源,点击获取