说明
本文教程适用于MATLABR2022a版本之前的版本。
本文方法安装的Mqtt工具箱不需要在MATLAB中添加额外的路径。
本文安装方法,适用于大部分.mltbx格式的工具箱。
1.工具箱获取
在MATLAB官网可以直接获取到需要的工具箱。打开下面链接:
MQTT in MATLAB - File Exchange - MATLAB Central。
跳转到界面如下:
点击下载,选择下载Toolbox格式,若下载Zip格式,请参见其他教程:MQTT在matlab中的应用_matlab mqtt-CSDN博客。
下载完毕,可以看到下载了一个.mltbx格式的文件。
若无法打开官网,可跳转:MatlabMqttTest: MATLAB2022版本之前的MQTT工具箱。
2.安装
打开MATLAB。点击“打开”,选择打开.mltbx文件。
点击“安装”。
勾选“我同意”,点击“确定”,即可。
3.测试
安装完成后,依次点击:MATLAB主页——>附加功能——>管理附加功能。弹出的附加功能管理器中,可以看MQTT的图标,即表示安装成功。
使用此方法安装的Mqtt工具箱,不需要在预设路径中额外添加安装路径。在代码中,不需要添加:
javaaddpath('Matlab安装路径\toolbox\matlab mqtt\jar\org.eclipse.paho.client.mqttv3-1.1.0.jar');
javaaddpath('Matlab安装路径\toolbox\matlab mqtt\mqttasync.jar');
4.代码测试
为确保成功安装了MQTT工具箱,可通过try-catch语句进行判断。代码如下:
Broker ='tcp://xxx'; %此处输入自己的信息
Client = 'xxx'; %三元组
UserName='XXX';
Password='xxx';
TranPort=1883;
SubTopic = 'xxx'; %订阅
PubTopic = 'xxx'; %发布
try
% 尝试调用Mqtt函数或变量
myMQTT=mqtt(Broker,...
'Username',UserName,...
'Password',Password,...
'ClientID',Client,...
'Port',TranPort);
catch ME
% 检查错误类型
switch ME.identifier
case 'MATLAB:UndefinedFunction'
% 弹出提示窗
msgbox(sprintf(['检测到未安装Mqtt工具箱\n'...
'请安装工具箱。']),...
'错误', 'error');
otherwise
% 处理其他类型的错误
msgbox('发生了未知错误,请联系开发人员。',...
'错误', 'error');
end
return;
end
% 订阅主题
mySub = subscribe(myMQTT,SubTopic,...
'callback',@(topic, data) ShowMessage(topic, data) ,...
'Qos',0);
% 发布信息
msg=“OK”;
publish(myMQTT,PubTopic,msg,'Qos',0);
% 回调函数
function ShowMessage(topic,data)
disp(topic);
disp(data);
%此处可添加其他消息处理程序
end
上述代码使用mqtt函数创建了一个 MQTT 客户端实例 myMQTT,使用subscribe函数,订阅了SubTopic这个主题,并设置了订阅主题的回调函数ShowMessage,当接收到订阅主题的发布消息,程序调用ShowMessage函数显示当前订阅主题与接收到的消息。
使用publish函数发布了一条消息“OK”到PubTopic这个主题。
如果出现错误(例如未安装 MQTT 工具箱),则捕获错误并弹出提示框。
将用户信息填写完毕后,运行代码得到如下结果,可以看到,MQTT客户端接收到了MATLAB发布到“/4G/RB/”主题的“OK”,通过MQTT客户端工具,发布了两条信息:OK和“好了”到主题“/4G/RA”,亦被MATLAB所接收到。