fopen status for serial objects
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
C3145
am 18 Jun. 2020
Kommentiert: C3145
am 18 Jun. 2020
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 Kommentare
Akzeptierte Antwort
Geoff Hayes
am 18 Jun. 2020
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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Environment and Settings finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!