首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >0-CH579M基本控制篇(自建物联网平台)-整体运行测试-CH579M使用自带以太网连接MQTT服务器

0-CH579M基本控制篇(自建物联网平台)-整体运行测试-CH579M使用自带以太网连接MQTT服务器

作者头像
杨奉武
发布2022-04-29 15:26:50
发布2022-04-29 15:26:50
7160
举报
文章被收录于专栏:知识分享知识分享

说明

这节测试一下CH579M使用自带以太网连接MQTT服务器

测试的是连接我的服务器,用户可以根据后面的教程搭建自己的MQTT服务器.

要学习该教程,请用户一定要先学完本人开源的以下基础例程!

测试

1.使用网线连接路由器或者交换机

2.编译下载这节的程序到开发板

3.开发板上面的串口会打印连接成功的日志

4.使用MQTT上位机测试通信

5.配置说明

设备订阅的主题是: user/以太网MAC地址

设备发布的主题是: device/以太网MAC地址

MQTT调试助手上订阅和发布的主题要和设备相反, 如下图我的配置

6.使用调试助手发送消息

在调试助手上点击连接, 然后点击订阅主题, 然后设置发送的消息,点击发送

程序说明

1.关于主要的几个文件说明(后面章节有详细的移植使用说明,用户前期只需要了解即可)

tcp_mqtt文件是处理TCP连接通信和MQTT连接通信的文件;

net_tcp_client文件: 调用这里面的API实现基本的TCP连接通信;

mqtt文件: 我封装的MQTT消息处理文件,使用环形队列式缓存管理,支持消息等级0,1,2

2.MQTT本身就是TCP服务器,所以先连接TCP服务器

设置要连接的服务器的地址和端口号

咱连接的地址有可能是域名也可能是ip, 使用net_dns_str_ip函数来处理一下;

如果是ip则会把地址解析到 tcp_client_value.ip_addr_remote 数组,在while(1)循环里面便会直接执行DHCP, 然后执行连接TCP;

如果是域名, 在while(1)里面便会先执行域名解析,然后再执行DHCP,最后在执行连接TCP;

3.TCP各种回调函数写在了 tcp_mqtt文件里面

使用 tcp_client_flag 变量来标记TCP的连接状态

4,接着是MQTT连接通信, MQTT文件我封装成了回调函数的形式

咱一开始的时候已经初始化了

5.连接成功TCP以后,发送MQTT连接协议

5.发送连接协议给服务器以后,如果服务器返回连接成功消息,便会调用MQTT连接成功回调函数

6.只要是连接上了MQTT服务器,咱后续可以在任意的地方调用订阅主题 mqtt_subscribe 或者发布消息 mqtt_publish 函数

 所有的消息都会存储到内部缓存里面,然后轮训发送出去

7.接收消息和发送消息

正常通信的MQTT消息直接丢给 mqtt_read_function函数, 该函数处理消息并调用相应的回调函数

结语

这节测试了基本的MQTT远程通信,在后面的章节中将学习到整个流程是如何实现的.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 说明
    • 这节测试一下CH579M使用自带以太网连接MQTT服务器
    • 测试的是连接我的服务器,用户可以根据后面的教程搭建自己的MQTT服务器.
    • 要学习该教程,请用户一定要先学完本人开源的以下基础例程!
  • 测试
    • 1.使用网线连接路由器或者交换机
    • 2.编译下载这节的程序到开发板
    • 3.开发板上面的串口会打印连接成功的日志
    • 4.使用MQTT上位机测试通信
    • 5.配置说明
      • 设备订阅的主题是: user/以太网MAC地址
      • 设备发布的主题是: device/以太网MAC地址
      • MQTT调试助手上订阅和发布的主题要和设备相反, 如下图我的配置
    • 6.使用调试助手发送消息
      • 在调试助手上点击连接, 然后点击订阅主题, 然后设置发送的消息,点击发送
  • 程序说明
    • 1.关于主要的几个文件说明(后面章节有详细的移植使用说明,用户前期只需要了解即可)
      • tcp_mqtt文件是处理TCP连接通信和MQTT连接通信的文件;
      • net_tcp_client文件: 调用这里面的API实现基本的TCP连接通信;
      • mqtt文件: 我封装的MQTT消息处理文件,使用环形队列式缓存管理,支持消息等级0,1,2
    • 2.MQTT本身就是TCP服务器,所以先连接TCP服务器
      • 设置要连接的服务器的地址和端口号
      • 咱连接的地址有可能是域名也可能是ip, 使用net_dns_str_ip函数来处理一下;
      • 如果是ip则会把地址解析到 tcp_client_value.ip_addr_remote 数组,在while(1)循环里面便会直接执行DHCP, 然后执行连接TCP;
      • 如果是域名, 在while(1)里面便会先执行域名解析,然后再执行DHCP,最后在执行连接TCP;
    • 3.TCP各种回调函数写在了 tcp_mqtt文件里面
      • 使用 tcp_client_flag 变量来标记TCP的连接状态
    • 4,接着是MQTT连接通信, MQTT文件我封装成了回调函数的形式
      • 咱一开始的时候已经初始化了
    • 5.连接成功TCP以后,发送MQTT连接协议
    • 5.发送连接协议给服务器以后,如果服务器返回连接成功消息,便会调用MQTT连接成功回调函数
    • 6.只要是连接上了MQTT服务器,咱后续可以在任意的地方调用订阅主题 mqtt_subscribe 或者发布消息 mqtt_publish 函数
      •  所有的消息都会存储到内部缓存里面,然后轮训发送出去
    • 7.接收消息和发送消息
      • 正常通信的MQTT消息直接丢给 mqtt_read_function函数, 该函数处理消息并调用相应的回调函数
  • 结语
    • 这节测试了基本的MQTT远程通信,在后面的章节中将学习到整个流程是如何实现的.
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档