Borrar filtros
Borrar filtros

Matlab app designer error related to an array

2 visualizaciones (últimos 30 días)
Luis Ricardo Rivera Goitia
Luis Ricardo Rivera Goitia el 5 de Mayo de 2023
Editada: Adam Danz el 8 de Mayo de 2023
I'm developing a GUI to show DC-motor current and speed signals, now I'm experiencing some code difficulties.
When running the code there's an error msg related to a point used in an array which actually runs perfectly in matlab .m code.
Does anyone know how to get rid of this error?
properties (Access = private)
current % Current in mA
speed % Speed in rad/s
time % Time in s
current_temp = [];
speed_temp = [];
time_temp = [];
Data
end

Respuesta aceptada

Adam Danz
Adam Danz el 5 de Mayo de 2023
The table appears to be empty (running from m-file)
MQTTSignal = mqttclient('tcp://broker.hivemq.com','Port',1883)
MQTTSignal =
Client with properties: BrokerAddress: "tcp://broker.hivemq.com" Port: 1883 ClientID: "" Timeout: 5 KeepAliveDuration: 60 Subscriptions: [0×3 table] Connected: 1
dataTT = read(MQTTSignal)
dataTT = 0×0 empty timetable
dataTT.Data
Error using .
Unrecognized table variable name 'Data'.
  6 comentarios
Adam Danz
Adam Danz el 6 de Mayo de 2023
Editada: Adam Danz el 8 de Mayo de 2023
Thanks for sharing the video!
> Any other suggestion to improve the plotting view?
Yes, the plotting can be more efficient. Instead of creating a new line object every iteration, you can update an existing line object.
% Create line objects
hCurrent = plot(app.UIAxes,nan,nan);
hSpeed = plot(app.UIAxes,nan,nan);
% update line objects within the loop
while strcmpi(...)
...
app.current = [app.current;app.current_temp];
app.speed = [app.speed;app.speed_temp];
app.time = [app.time;app.time_temp];
set(hCurrent,'XData',app.time,'YData',app.current)
set(hSpeed,'XData',app.time,'YData',app.speed)
end
Luis Ricardo Rivera Goitia
Luis Ricardo Rivera Goitia el 7 de Mayo de 2023
I already test it, and it worked though I still need to run it with this "if sentence" to make current & speed graphs run continuosly.
function StartButtonPushed(app, event)
set(app.StartButton,'Enable','off')
%app.StopButton.Text='Stop'
% Connection to MQTT
MQTTSignal = mqttclient('tcp://broker.hivemq.com','Port',1883);
Topic = "ESP32/data";
Data = subscribe(MQTTSignal,Topic);
pause(3);
%while strcmpi(app.StartButton.Enable,'off')
% Create line objects
hCurrent = plot(app.UIAxes,nan,nan);
hSpeed = plot(app.UIAxes2,nan,nan);
while strcmpi(app.StartButton.Enable,'off')
dataTT = read(MQTTSignal);
str = (dataTT.Data);
str = strrep(str, '{', ''); % remove opening bracket
str = strrep(str, '}', ''); % remove closing bracket
str = split(str,",");
app.current_temp = str2double(str(:,1));
app.speed_temp = str2double(str(:,2));
app.time_temp = str2double(str(:,3));
app.current = [app.current;app.current_temp];
app.speed = [app.speed;app.speed_temp];
app.time = [app.time;app.time_temp];
set(hCurrent,'XData',app.time,'YData',app.current)
set(hSpeed,'XData',app.time,'YData',app.speed)
% plot(app.UIAxes,app.time,app.current);
% plot(app.UIAxes2,app.time,app.speed);
if strcmpi(app.StartButton.Enable,'off')
MQTTSignal = mqttclient('tcp://broker.hivemq.com','Port',1883);
Topic = "ESP32/data";
Data = subscribe(MQTTSignal,Topic);
pause(3)
end
end

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Construct and Work with Object Arrays en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by