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 Kommentare

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.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Rishav
Rishav am 7 Sep. 2023
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.

Produkte

Version

R2022a

Gefragt:

am 27 Jul. 2022

Beantwortet:

am 7 Sep. 2023

Community Treasure Hunt

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

Start Hunting!

Translated by