MQTT控件使用
# Smart之MQTTClient控件使用
# 1. 说明
学习使用MQTTClient控件,了解MQTT通信协议的工作模式。通过Smart智慧控制平台,实现MQTTClient控件的使用,学会使用该控件后可进行MQTT协议相关的物联网开发。使用该控件需安装MQTT服务端获取MQTT服务器的IP地址与端口号用户名,密码,TARS提供MQTT服务器的功能 。
通过实例的制作和学习,您可以掌握Smart智慧控制平台内MQTTClient的使用方式,帮助实现在该平台上MQTT协议物联网应用的开发。
# 2. 设计明细
开启Smart智慧控制平台,分别加入下插图之控件。或者通过点击菜单栏[文件]-[打开项目]
选择范例项目文件来打开该范例。

①:TImage组件,控件名称为Image1
。
②:TMQTTClient组件,控件名称为MQTTClient1
。
③:TLabel组件,控件名称为Label1
。
④:TLabel组件,控件名称为Label2
。
⑤:TEdit组件,控件名称为EditHost
。
⑥:TEdit组件,控件名称为EditPort
。
⑦:TLabel组件,控件名称为Label3
。
⑧:TLabel组件,控件名称为Label4
。
⑨:TLabel组件,控件名称为Label5
。
⑩:TLabel组件,控件名称为Label6
。
(11):TEdit组件,控件名称为EditTopic
。
(12):TEdit组件,控件名称为EditSend
。
(13):TImage组件,控件名称为ImageSend
。
(14):TSwitchButton组件,控件名称为SwitchButton1
。
Main主窗体设置
BorderStyle
:设置窗体样式类型=bsDialog
。Caption
:设置窗体标题=MQTTClient控件使用
。ClientHeight
:设置窗体客户区高度=438
。ClientWidth
:设置窗体客户区宽度=465
。
①Image1属性设置
Align
:设置对齐方式=alClient
。Stretch
:设置图片拉伸=True
。Picture
:设置图片。 点击Picture
属性右侧的[...]
按钮,打开文件上传界面,点击[Load...]
从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]
加载图片。
②MQTTClient1属性设置
BrokerHostName
:设置MQTT服务端的地址,例如=192.168.0.176
。
③Label1属性设置
Caption
:设置标签显示的字幕内容=MQTTClient控件使用
。Font
:设置字体。双击该属性或者点击属性右侧的[...]
打开字体设置界面。
④Label2属性设置
Caption
:设置标签显示的字幕内容=地址:
。Font
:设置字体。双击该属性或者点击属性右侧的[...]
打开字体设置界面。
⑤EditHost属性设置
Text
:设定编辑框中的文本信息,此处默认为MQTT服务端的IP地址,例如192.168.0.176
。Name
:设定控件名称=EditHost
。Font
:设置字体。双击该属性或者点击属性右侧的[...]
打开字体设置界面。
⑥EditPort属性设置
Text
:设定编辑框中的文本信息,此处默认为MQTT服务端的端口号,例如1883
。Name
:设定控件名称=EditPort
。NumbersOnly
:设定是否只显示数字=True
。Font
:设置字体。双击该属性或者点击属性右侧的[...]
打开字体设置界面。
⑦Label3属性设置
Caption
:设置标签显示的字幕内容=端口:
。Font
:设置字体。双击该属性或者点击属性右侧的[...]
打开字体设置界面。
⑧Label4属性设置
Caption
:设置标签显示的字幕内容=连接:
。Font
:设置字体。双击该属性或者点击属性右侧的[...]
打开字体设置界面。
⑨Label5属性设置
Caption
:设置标签显示的字幕内容=主题:
。Font
:设置字体。双击该属性或者点击属性右侧的[...]
打开字体设置界面。
⑩Label6属性设置
Caption
:设置标签显示的字幕内容=主题:
。Font
:设置字体。双击该属性或者点击属性右侧的[...]
打开字体设置界面。
(11)EditTopic属性设置
Text
:设定编辑框中的文本信息,此处默认为MQTT的订阅信息,例如Message
。Name
:设定控件名称=EditTopic
。Font
:设置字体。双击该属性或者点击属性右侧的[...]
打开字体设置界面。
(12)EditSend属性设置
Name
:设定控件名称=EditSend
。TextHint
:设定内容为空时显示的提示信息=在此输入要发送的内容
。Font
:设置字体。双击该属性或者点击属性右侧的[...]
打开字体设置界面。
(13)ImageSend属性设置
Height
:设置控件高度=97
。Width
:设置控件宽度=105
。Stretch
:设置图片拉伸=True
。Picture
:设置显示的图片。点击Picture
属性右侧的[...]
按钮,打开文件上传界面,点击[Load...]
从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]
加载图片。
(14)SwitchButton1属性设置
Height
:设置控件高度=56
。Width
:设置控件宽度=56
。Stretch
:设置图片拉伸=True
。SwitchOff
:设置IsChecked
=False
时显示的图片。点击SwitchOff
属性右侧的[...]
按钮,打开文件上传界面,点击[Load...]
从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]
加载图片。
SwitchOn
:设置IsChecked
=True
时显示的图片。点击SwitchOn
属性右侧的[...]
按钮,打开文件上传界面,点击[Load...]
从文件浏览器中选择对应的图片文件上传,返回该界面下,待显示出图片后点击[OK]
加载图片。
# 3. 程序设计
# 3.1. 程序初始设置
在程序启动时,将地址与端口号赋值给MQTT控件。
constructor TMyHandler.Create(AOwner: TComponent);
begin
FThis :=TBaseForm(AOwner);
FThis.MQTTClient1.BrokerHostName := FThis.EditHost.Text;
FThis.MQTTClient1.BrokerPort := StrToInt(FThis.EditPort.Text);
end;
2
3
4
5
6
# 3.2. 事件设置
- (14)SwitchButton1-OnSwitch事件
开启或者关闭MQTT客户端。
procedure TMyHandler.SwitchButton1Switch;
//开启关闭MQTT客户端
begin
FThis.MQTTClient1.BrokerHostName := FThis.EditHost.Text;
FThis.MQTTClient1.BrokerPort := StrToInt(FThis.EditPort.Text);
FThis.MQTTClient1.Enabled := FThis.SwitchButton1.IsChecked;
FThis.ImageSend.Enabled := FThis.SwitchButton1.IsChecked;
end;
2
3
4
5
6
7
8
- (13)ImageSend-OnClick事件
点击发送的图片按钮以发送MQTT订阅信息。
procedure TMyHandler.ImageSendClick;
//向特定主题发布消息
begin
if FThis.EditTopic.Text = '' then
begin
ShowMessage('发送的主题不可为空!');
Exit;
end;
if FThis.EditSend.Text = '' then
begin
ShowMessage('发送的消息不可为空!');
Exit;
end;
FThis.MQTTClient1.Subscribe(FThis.EditTopic.Text);
FThis.MQTTClient1.PublishStr(FThis.EditTopic.Text, FThis.EditSend.Text);
end;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
- ②MQTTClient1-OnPublishReceived事件
当MQTT客户端接收到订阅信息时弹出消息框显示接收内容。
procedure TMyHandler.MQTTClient1PublishReceived;
//订阅主题接收信息并显示
begin
ShowMessage('接收主题名称:' + ATopic + ' 接收内容:' + APayload);
end;
2
3
4
5
# 4. 运行结果
通过工具栏保存,将程序保存为 sdb 项目文件。
使用鼠标点击工具栏运行(Run),测试运行结果。填写MQTT的地址以及端口号,点击连接
右侧的开关打开连接,填写主题以及内容后,点击下方的发送图标,此时会弹窗显示接收到的主题以及订阅信息。
