fopen status for serial objects
4 次查看(过去 30 天)
显示 更早的评论
Using R2016a, I'd like to nicely deal with fopen(serial) errors rather than the command window barf at me.
Normal syntax for fopen() includes [fileID,errmsg] = fopen(___)
But the serial version of the command using an object doesn't appear to return anything unless it errors.
>> obj1 = instrfind('Type', 'serial', 'Port', port, 'Tag', '');
>> set(obj1, 'BaudRate', 115200, 'Timeout', 1, 'Terminator','LF');
>> fopen(obj1)
>>
Note that fopen just happened without saying it worked.
Now, I'll open a TeraTerm session to COM5 and try again...
>> fopen(obj1)
Error using serial/fopen (line 72)
Open failed: Cannot connect to the COM5 port. Possible reasons are another
application is connected to the port or the port does not exist.
As expected. But... how do I deal with these messages programmatically?
>> [fileID,errmsg] = fopen(obj1)
Error using serial/fopen
Too many output arguments.
Nope. Argggg.
Thoughts/Comments/Flames?
0 个评论
采纳的回答
Geoff Hayes
2020-6-18
Could you use a try catch block to try to open the serial object and then, if there is an error, take the appropriate action given the exception?
obj1 = instrfind('Type', 'serial', 'Port', port, 'Tag', '');
set(obj1, 'BaudRate', 115200, 'Timeout', 1, 'Terminator','LF');
try
fopen(obj1);
catch ME
fprintf('Could not open serial object because of %s\n', ME.identifier);
if strcmp(ME.identifier,'<some error identifier>')
fprintf('Handling exception for %s\n', ME.identifier);
% perform the appropriate action
else
fprintf('Unhandled exception for %s\n', ME.identifier);
end
end
The '<some error identifier>' would be the error (or errors) that you are interested in.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Environment and Settings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!