使用matlab串口功能时,如果异常退出导致没有删除串口,下次连接时会报错,似乎被matlab自身所占用了。如果直接使用,会失败。
报错如下
错误使用 serial/fopen (line 72)
打开失败: Port: COM7 is not available. No ports are available.
Use INSTRFIND to determine if other instrument objects are connected to the requested device.
出错 RS485 (line 26)
fopen(s);
这个问题很容易解决,只需要拔掉电脑上的USB端口,并且重启MATLAB即可。要注意,重启matlab时最好移除端口,因为我发现连接着端口会导致matlab重启时间过长或者直接重启是吧。
当然,重启多了就觉得很麻烦,所以写了如下程序,可以防止任何情况下的串口重连失败。多次测试效果很好。不会再报错了。我用的端口时COM7.
% 尝试打开串口
try %尝试打开一次串口,打开成功则删除串口
s = serial('COM7');
fopen(s);
disp('串口可用');
fclose(s);
delete(s);
catch %尝试失败,则访问所有串口,并且删除所有占用的串口
coms = instrfindall;
stopasync(coms);
fclose(coms);
delete(coms);
disp('串口已被占用');
end
if exist('s','var')==1
delete(s);
end