Errorhandling with Readmatrix trying to read data from a file

I am using the "readmatrix" function in a matlab function in simulink to repeatedly read data out of a file called output.dat.
This works, but sometimes another Software is accessing the file for a quick moment so im getting a error message that states that permission to open the file is denied.
Is it possible to handle errors by editing the try catch part in the "readmatrix.m" directly? I want the function to try to access the file and in case it is not accessible then it should try again until it is accessable. How can i implement this best?
Thanks in advance.

5 commentaires

With try...catch on the call to readmatrix is probably workable -- don't even think about trying to mung on the original.
Ideal would be some way to set up a semaphore with the other app, but that's probably going to get very involved -- I "know nuthink!" about Simulink but adding it as another layer besides can't make it easier...
Hi,
Its true, Simulink doesnt make things easyer in this case, but i need it for the task.
The errorhandling of "readmatrix" is working in a Matlab script, but the problem is Simulink. I have the function in a Matlab function block and there it says i cant use try / catch. All it needs to do is to try to access the file again instead of throwing an error and breaking the simulation. I dont know how to do this.
Hey Dennis,
Did you solve your issue in the meantime?
I'm facing the exact same problem and looking for a sollution...
Thanks.
Hello Damien,
yes i solved the issue. I did errorhandling differently: First i made sure that the file i want to read in is actually not occupied by the other software. This i did by using "fopen":
open=fopen('output.dat', 'r');
If open is -1 then it is occupied and i will just try again (loop) until the value is not -1 anymore.
Another thing i did was checking open for "integrity", so i checked if it contains the array i expect in the expected format (for example with "if open =~ isequal(size(output), [6 2])...).
This helped.
Thanks for the tips! I will try this in my code.

Connectez-vous pour commenter.

Réponses (1)

Hi Dennis,
I am glad that your issue is resolved.
Apparently, the file that you want to read was not occupied by the other software and you used "fopen" for the same:
open = fopen('output.dat','r');
If open is -1, then it's occupied and try running the loop again until the value is not -1 anymore.

Catégories

En savoir plus sur Programming dans Centre d'aide et File Exchange

Produits

Version

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by