Access .mlapp data in .m file after app closes

3 visualizaciones (últimos 30 días)
Jonathan Avesar
Jonathan Avesar el 5 de Jun. de 2020
Comentada: Tommy el 8 de Jun. de 2020
Hello,
I have a script (.m) that calls a app (.mlapp) that I created using AppDesigner. The app is designed to collect user input. After the user enters the values, he/she clicks an OK button which propmpts the app to close. After the app closes, I want to access the user data from the app in the scipt (.m) and perform operations with the data. How do I do this?
I tried creating "public" properties and storing the values in the said created public properties, but I cant access those properties after the app is closed because the handle is deleted when the app deletes. I understand that it is possible to transfer data before the app deletes but the problem with that is that I don't know when the user is finished entering the data until the app is deleted.
My code in the script (.m) looks something like this:
H = myApp;
waitfor(H)
%Here I need to access the data from myApp

Respuesta aceptada

Tommy
Tommy el 5 de Jun. de 2020
Rather than waitfor(H), which waits until H is deleted, how about waitfor(H,propname,propvalue), where propname is some property of H that gets set to propvalue once the user is finished entering data? And delete your app after you've grabbed the relevant properties, rather than from within the app.
  2 comentarios
Jonathan Avesar
Jonathan Avesar el 8 de Jun. de 2020
Hi Tommy,
Thank you so much, that method worked! I ended up creating a public variable within the app called
app.Finished = false; %Status of the app, True if user finished entering data
and set it to true when the user clicks on the OK button. I then added this structure in my script (.m) file:
%Wait for a positive finished state
waitfor(H,'Finished',true)
%Collect app data
attribute = H.attribute.Value;
%Close the app
delete(H)
And that worked perfectly!
**Hint, do not use a while loop in the main script. I tried that first before using this strategy and the main script was not capable of reading in new app attributes for exiting the loop while in the loop (e.g. while ~H.Finished)
Tommy
Tommy el 8 de Jun. de 2020
Awesome! I am super glad that worked, this was a bit of a fun one. Happy to help as always!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Develop Apps Using App Designer en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by