Error using MQTT callbacks in AppDesigner

16 visualizzazioni (ultimi 30 giorni)
I am trying to communicate with a MQTT broker inside a app but my callback functions don't run.
It gives me the following error: Invalid callback function 'myMQTT_RdAllPow_Callback' for input arguments of type 'string'.
The code is bellow:
app.myMQTT = mqtt(mqttServerAddr,'Username','test','Password','test','Port',1883);
subscribe_regCallback(app, app.myMQTT);
app.ConnectedLamp.Color = 'green';
app.NotConnectedLabel.Text = 'Connected';
while 1
publish(app.myMQTT, 'VGA/RdAllPow', '1');
pause(5);
end
function subscribe_regCallback(app,myMQTT)
app.RdAllPow = subscribe(myMQTT, 'VGA/RdAllPow', 'QoS', 0, 'Callback', @myMQTT_RdAllPow_Callback);
end
function myMQTT_RdAllPow_Callback(app,~)
app.ConnectedLamp.Color = 'yellow';

Risposta accettata

Martijn
Martijn il 12 Mag 2020
If you wish to use a private method of an App Designer App as callback, please define your callback by referring to @app.myCallbackMethod. Further, make sure then that myCallbackMethod has a function signature:
function myCallbackMethod(app, input1AsNormallyExpectedByCallback, input2AsNormallyExpectedByCallback, inputNAsNormallyExpectedByCallback, etc)
So in your specific case:
function subscribe_regCallback(app,myMQTT)
% Refer to @app.myMQTT_RdAllPow_Callback
app.RdAllPow = subscribe(myMQTT, 'VGA/RdAllPow', 'QoS', 0, 'Callback', @app.myMQTT_RdAllPow_Callback);
end
% For a MQTT callback two inputs are expected, make sure you
% really define them both and also add app as first input
function myMQTT_RdAllPow_Callback(app,topic,data)
app.ConnectedLamp.Color = 'yellow';

Più risposte (0)

Categorie

Scopri di più su Migrate GUIDE Apps in Help Center e File Exchange

Prodotti


Release

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by