梧桐uuu 发表于 2025-4-2 10:30

与MATLAB串口通信有时不成功

用 STM32CubeIDE 写程序通过串口从 MATLAB 中获取数据。第一次在 STM32CubeIDE 中运行程序,并通过串口从 MATLAB 中获取正确的数据//MATLAB serial codes=serial('COM5','BaudRate',9600);fopen(s);data=fscanf(s);d23=str2num(data)x=plot(d23);但是第二次运行用 程序获取数据时,显示“COM 端口不可用”之类的错误。所以现在我要经常关闭 MATLAB 窗口,然后再次打开 MATLAB 。不知道如何避免这种错误提示

公羊子丹 发表于 2025-4-3 07:36

你试试在 MATLAB 里先执行 fclose(s); delete(s); clear s; 释放串口资源,然后再运行看看还能不能获取数据?

周半梅 发表于 2025-4-3 07:37

这个问题可能是 MATLAB 没有正确关闭串口连接,导致端口被占用。你可以在 MATLAB 代码的最后加上 fclose(s); delete(s); clear s; 试试看。

帛灿灿 发表于 2025-4-3 07:37

我之前遇到过类似情况,可能是 MATLAB 在程序崩溃或者中断时没有释放串口。你可以在命令窗口输入 instrfind 看看是否还有未关闭的串口连接。

童雨竹 发表于 2025-4-3 07:38

你是不是每次运行都重新创建了 serial 对象?建议先检查 instrfind,如果端口已经打开,先 fclose 释放再创建新的对象。

万图 发表于 2025-4-3 07:39

这个问题我也碰到过,MATLAB 有时候会占住 COM 口,建议你运行 delete(instrfindall); 先清理一下所有串口对象再试试。

Wordsworth 发表于 2025-4-3 07:40

你可以在 MATLAB 代码里加个 try...catch 语句,这样即使出错也能确保正确关闭串口,避免下次打开时被占用。

Bblythe 发表于 2025-4-3 07:41

你试过在 STM32CubeIDE 端手动复位 STM32 开发板吗?有时候板子上的串口没有正确关闭,复位一下可能会好用。

Pulitzer 发表于 2025-4-3 07:42

可能是 MATLAB 的串口对象在程序结束后没有及时释放,你试试手动关闭 MATLAB 进程,看看是不是还能打开 COM 口?

Uriah 发表于 2025-4-3 07:43

你要不试试把 serial 换成 serialport?MATLAB 2019 之后推荐用 serialport 代替 serial,据说稳定性更好。

Clyde011 发表于 2025-4-3 07:44

你也可以试试在 MATLAB 里 fopen(s); pause(1); fclose(s); 反复开关串口,看能不能手动释放 COM 口资源。

probedog 发表于 2025-4-3 11:13

串口未正确关闭导致的?

elephant00 发表于 2025-4-3 11:19

用逻辑分析仪来监测串口通信的信号是否异常。

classroom 发表于 2025-4-3 12:59

在 MATLAB 中,每次使用完串口后,都应使用 fclose(s) 命令来关闭它。

laocuo1142 发表于 2025-4-3 13:46

检查串口是否被占用。

flycamelaaa 发表于 2025-4-3 14:26

在 MATLAB 中,使用 try-catch 结构来捕获并处理可能出现的错误,可以帮助你更优雅地处理串口不可用的情况,而不是让程序崩溃。

powerantone 发表于 2025-4-3 15:16

重启 MATLAB 或电脑试试。

两只袜子 发表于 2025-4-3 17:00

用HAL 库或 LL 库试试吧。

jcky001 发表于 2025-4-3 18:00

在 MATLAB 中不要同时尝试打开同一个串口的多个实例。

stormwind123 发表于 2025-4-3 18:06

检查 STM32CubeIDE 中的串口设置是否有误。
页: [1]
查看完整版本: 与MATLAB串口通信有时不成功