Matlab app designer error related to an array

2 次查看(过去 30 天)
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

采纳的回答

Adam Danz
Adam Danz 2023-5-5
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 个评论
Adam Danz
Adam Danz 2023-5-6
编辑:Adam Danz 2023-5-8
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
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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Construct and Work with Object Arrays 的更多信息

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by