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!