0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MQTT测试程序上机实验

瑞萨嵌入式小百科 来源:瑞萨MCU小百科 2025-02-11 13:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

13.6.5 MQTT测试程序上机实验

把mqtt_test、paho.mqtt.c.tar.bz2放到Ubuntu上同一个目录下。

1.编译paho库

在Ubuntu下执行如下命令:

左右滑动查看完整内容

$ tar xjf paho.mqtt.c.tar.bz2
$ cd paho.mqtt.c

修改CMakeLists.txt,在最前面增加如下内容:

左右滑动查看完整内容

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
SET(CMAKE_C_COMPILER aarch64-poky-linux-gcc)
SET(CMAKE_CXX_COMPILER aarch64-poky-linux-g++)
set(CMAKE_SYSROOT /opt/remi-sdk/sysroots/aarch64-poky-linux)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

然后执行如下命令编译:

左右滑动查看完整内容

$ source /opt/remi-sdk/environment-setup-aarch64-poky-linux 
$ mkdir build
$ cd build
$ cmake ../ -DCMAKE_INSTALL_PREFIX=output
$ make
$ make install

如果一切顺利,会在build目录下生成一个output目录(有些错误信息提示权限问题,无关紧要),里面有很多库文件。内容如下:

$ ls output/
bin include lib share

把头文件、库文件复制到工具链里:

左右滑动查看完整内容

$ sudo cp -rf output/include/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/include/
$ sudo cp -rfd output/lib/* /opt/remi-sdk/sysroots/aarch64-poky-linux/usr/lib64/

把output目录压缩,上传到开发板:

左右滑动查看完整内容

$ tar cjf output.tar.bz2 output/
$ scp output.tar.bz2 root@192.168.5.9:/mnt

在开发板里解压output.tar.bz2文件,复制库文件到“/usr/lib64”,命令如下:

左右滑动查看完整内容

# cd /mnt
# tar xjf output.tar.bz2
# cd output/lib
# cp -d libpaho* /usr/lib64/

2.编译测试程序

在Ubuntu上执行如下命令:

左右滑动查看完整内容

$ source /opt/remi-sdk/environment-setup-aarch64-poky-linux
$ cd mqtt_test
$ make
$ scp mqtt_test root@192.168.5.9:/mnt

3.测试

按照《13.6.3 PC MQTT工具使用》,先启动MQTT服务软件,然后再启动MQTTX,如下配置、连接:

e1d4655a-e82d-11ef-9310-92fbcf53809c.png

在MQTTX里订阅主题为“/iot/up”的消息,发送主题为“/iot/down”的消息,如下图所示:

e1e53c86-e82d-11ef-9310-92fbcf53809c.png

最后,在开发板上执行mqtt_test程序,如下:

e1f8bbe4-e82d-11ef-9310-92fbcf53809c.png

13.7 MQTT程序开发

源码为:

e20e0fa8-e82d-11ef-9310-92fbcf53809c.png

13.7.1 程序流程

程序主要有2大功能:

①根据配置文件,周期性地读“点”、发布消息

②订阅消息,根据消息写“点”

这些功能可以细分如下:

①通过RPC获得MQTT信息

②通过RPC获得“点”的信息

③连接MQTT Broker

④订阅消息

⑤周期性地读“点”,发布消息

在程序运行过程中,用户可能使用前台程序修改了配置,比如修改了MQTT Broker的信息、增加、删除的点,并且程序运行过程中可能发生错误。这就需要重新运行程序:重新运行上述5个细分步骤。

本程序使用状态机来实现,有如下状态:

e230f90a-e82d-11ef-9310-92fbcf53809c.png

在main函数中,根据当前状态进行对应处理。

e246fd40-e82d-11ef-9310-92fbcf53809c.png

13.7.2 监测配置文件

前台程序会导致配置文件被修改,需要监测配置文件是否发生了变化。使用的函数在cfg.c里,它们的代码在《13.4.2 配置文件的操作》讲解过。

main.c的main函数里,调用的代码如下:

e2777812-e82d-11ef-9310-92fbcf53809c.png

13.7.3 初始化RPC连接

需要使用RPC调用得到MQTT信息、得到点的信息。所以第1个状态代码如下:

e2ba4c28-e82d-11ef-9310-92fbcf53809c.png

13.7.4 获取MQTT信息

要进行MQTT连接,需要获得MQTT信息,代码如下:

e2da26e2-e82d-11ef-9310-92fbcf53809c.png

13.7.5 获取点的信息

后续要读点、上报点的信息,所以需要使用RPC调用获得、记录所有点的信息,代码如下:

e305dd46-e82d-11ef-9310-92fbcf53809c.png

13.7.6 连接MQTT

代码如下:

e32d4b10-e82d-11ef-9310-92fbcf53809c.png

13.7.7 订阅消息

代码如下:

e3525964-e82d-11ef-9310-92fbcf53809c.png

13.7.8 发布消息

发布消息时,如果没有错误,则已知保存在本状态:循环发布消息。代码如下:

e373673a-e82d-11ef-9310-92fbcf53809c.png

13.7.9 订阅消息的处理

在前面设置了MQTT回调函数,当接收到订阅的消息时,使用如下函数处理:

①解析接收到的信息,根据它找到“点”

②写点

e3a3247a-e82d-11ef-9310-92fbcf53809c.png

13.7.10 错误处理

如果发生的错误累计达到10次,或则配置文件发生了变化,则重新处理:

e3d06b4c-e82d-11ef-9310-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 命令
    +关注

    关注

    5

    文章

    746

    浏览量

    23447
  • Ubuntu
    +关注

    关注

    5

    文章

    603

    浏览量

    32886
  • 测试程序
    +关注

    关注

    1

    文章

    71

    浏览量

    23369
  • MQTT
    +关注

    关注

    5

    文章

    720

    浏览量

    24786
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    汇编语言上机实验指导书

    汇编语言上机实验指导书一、概述上机实验总学时为18学时,其中综合性和设计性实验至少为8学时。实验
    发表于 03-23 16:06 21次下载

    DSP的实验测试程序(汇编)

    DSP的实验测试程序(汇编)
    发表于 02-11 10:46 64次下载
    DSP的<b class='flag-5'>实验</b><b class='flag-5'>测试</b><b class='flag-5'>程序</b>(汇编)

    汇编语言程序结构

    实 验   汇编语言程序结构 一、实验目的 1.掌握汇编语言程序上机过程。    2.掌握汇编语言结构。
    发表于 09-28 23:11 3176次阅读

    Labview之上机实验

    Labview之上机实验二,很好的Labview资料,快来下载学习吧。
    发表于 04-19 09:54 0次下载

    Labview之上机实验之三

    Labview之上机实验之三,很好的Labview资料,快来下载学习吧。
    发表于 04-19 10:23 0次下载

    微信小程序上线三天 看网友们现在怎么样了

    程序上线的第一天朋友圈炸了; 小程序上线的第二天无人问津了; 小程序上线的第三天网友们到处询问如何删除小程序。..。
    发表于 01-11 14:13 2342次阅读
    微信小<b class='flag-5'>程序上</b>线三天 看网友们现在怎么样了

    哈工大四系FPGA上机实验编程部分

    哈工大四系FPGA上机实验编程部分
    发表于 10-20 15:52 16次下载

    C++程序设计上机指导.pdf

    C++程序设计上机指导
    发表于 05-02 10:20 28次下载

    C程序上机教程之课程标准的详细资料免费下载

    C程序上机一门对学生进行程序设计训练的实践性课程,旨在锻炼学生的实际操作能力,培养良好的编程思想和程序调试基本技能,提高学生的提高计算机应用能力。
    发表于 11-20 08:00 9次下载
    C<b class='flag-5'>程序上机</b>教程之课程标准的详细资料免费下载

    MATLAB上机作业的程序资料免费下载

    本文档的主要内容详细介绍的是MATLAB上机作业的程序资料免费下载。
    发表于 01-11 08:00 0次下载
    MATLAB<b class='flag-5'>上机</b>作业的<b class='flag-5'>程序</b>资料免费下载

    cadence-Pspice-上机实验-电子电路的直流分析

    cadence-Pspice-上机实验-电子电路的直流分析(现代电源技术期末试题)-该文档为cadence-Pspice-上机实验-电子电路的直流分析讲解文档,是一份不错的参考资料,感
    发表于 09-24 16:36 20次下载
    cadence-Pspice-<b class='flag-5'>上机</b><b class='flag-5'>实验</b>-电子电路的直流分析

    手指在应用程序上机器人

    电子发烧友网站提供《手指在应用程序上机器人.zip》资料免费下载
    发表于 11-16 10:04 0次下载
    手指在应用<b class='flag-5'>程序上机</b>器人

    电工知识—S7-1500程序上

    把CPU中的程序上传到计算机中是很有工程应用价值的操作,上传的前提是用户必须拥有读程序的权限,上传程序的步骤如下。
    的头像 发表于 03-07 10:04 1.4w次阅读

    USB Gadget zero应用上机实验

    2. 上机实验 实验步骤: 先安装 g_zero 驱动程序:在开发板上执行 modprobe g_zero 然后连接 OTG 线到 PC 在 Ubuntu 中识别出设备 执行
    的头像 发表于 07-13 11:15 1480次阅读

    USB鼠标驱动程序上机实验

    上机实验 需要重新配置内核,去掉内核自带的驱动程序。在内核目录下执行"make menuconfig": Device Drivers --- > HID support
    的头像 发表于 07-17 17:35 1272次阅读